apds9960 — מנהל התקן לחיישן קרבה, מחוות וצבע¶
מודול זה מספק מנהל התקן לחיישן הקרבה הדיגיטלי, אור הסביבה, צבע RGB והמחוות מסוג Broadcom/Avago APDS9960 דרך I2C. מנהל ההתקן חושף בקרות איפשור/ניטרול לכל מאפיין, קריאות ערוץ גולמיות (clear, R, G, B, קרבה), ומכונת מצבים תוכנתית לפענוח מחוות המסווגת החלקות מעלה/מטה/שמאלה/ימינה ומחוות קרוב/רחוק מתוך ה-FIFO של 4 הפוטו-דיודות שעל השבב.
דוגמת שימוש:
import time
from machine import I2C, Pin
from apds9960 import uAPDS9960 as APDS9960
bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = APDS9960(bus)
sensor.enableLightSensor()
sensor.enableProximitySensor()
while True:
r = sensor.readRedLight()
g = sensor.readGreenLight()
b = sensor.readBlueLight()
c = sensor.readAmbientLight()
p = sensor.readProximity()
print(r, g, b, c, p)
time.sleep_ms(100)
מחלקות¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
בונה מופע של מנהל התקן APDS9960.
busהוא אובייקט אפיק I2C מוגדר המשמש לתקשורת עם החיישן. מחלקת הבסיס מנפיקה קריאותread_byte_data,write_byte_dataו-read_i2c_block_dataבסגנון SMBus; עבור ה-machine.I2Cשל MicroPython השתמשו ב-uAPDS9960במקום זאת.addressהיא כתובת ה-I2C בת 7 הסיביות של ההתקן. ברירת המחדל היאAPDS9960_I2C_ADDR(0x39).valid_idהיא רשימה של ערכים קבילים המוחזרים על-ידי אוגר הזיהוי של השבב. ברירת המחדל היאAPDS9960_DEV_ID.
הבנאי קורא את מזהה ההתקן ומעלה
ADPS9960InvalidDevIdאם הוא אינו נמצא ב-valid_id. לאחר מכן הוא מנטרל כל מאפיין, מתכנת את ערכי ATIME/WTIME/PPULSE שבברירת המחדל, ומחיל את ברירות המחדל של הגבר ה-LED, הגבר הקרבה, הגבר ה-ALS, ספי הקרבה, ספי אור הסביבה, ההתמדה, ותצורת מנוע המחוות (ספי כניסה/יציאה, GCONF1, הגבר מחוות, הגבר LED למחוות, זמן המתנה למחוות, היסטי מחוות, GPULSE, GCONF3, ואיפשור פסיקת מחוות).בקרת מצב ועוצמה¶
- getMode() int¶
מחזירה את הערך הגולמי של אוגר ה-ENABLE, המקודד אילו מאפיינים מאופשרים כעת (עוצמה, ALS, קרבה, המתנה, פסיקת ALS, פסיקת קרבה, מחוות).
- setMode(mode: int, enable: bool = True) None¶
מאפשרת או מנטרלת מאפיין בודד באוגר ה-ENABLE.
modeחייב להיות אחד מערכי ה-APDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). כאשרmodeהואAPDS9960_MODE_ALL, כל הסיביות מודלקות או מכובות בבת אחת. מעלהADPS9960InvalidModeעבור ערכים מחוץ לטווח.
חיישן אור סביבה / RGB¶
חיישן קרבה¶
מנוע מחוות¶
- enableGestureSensor(interrupts: bool = True) None¶
מאפסת את מצב המחוות, מגדירה את WTIME ואת ספירת פעימות המחוות, מגבירה את ה-LED ל-300%, מגדירה את סיבית איפשור פסיקת המחוות, נכנסת למכונת המצבים של המחוות, מפעילה את ההתקן, ומאפשרת את מצבי ההמתנה, הקרבה והמחוות.
- disableGestureSensor() None¶
מאפסת את מצב המחוות, מנטרלת את פסיקת המחוות ואת מכונת המצבים, ועוצרת את מנוע המחוות.
- isGestureAvailable() bool¶
מחזירה
Trueאם סיבית ה-GVALID של אוגר סטטוס המחוות מוגדרת, מה שמציין שנתוני ה-FIFO של המחוות מוכנים לקריאה.
- readGesture() int¶
מרוקנת את ה-FIFO של המחוות, מריצה את מפענח המחוות המובנה, ומחזירה אחד מקבועי הכיוון
APDS9960_DIR_*. מחזירהAPDS9960_DIR_NONEאם המנוע אינו פועל, אין נתונים תקפים זמינים, או שהנתונים לא נפתרו למחווה מזוהה.
- resetGestureParameters() None¶
מנקה את חוצץ (buffer) ה-FIFO הפנימי של המחוות, את ההפרשים, הספירות, מוני הקרוב/רחוק, המצב, והתנועה האחרונה שפוענחה.
ספי קרבה¶
- getProximityIntLowThreshold() int¶
כינוי ל-
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
כינוי ל-
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
כינוי ל-
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
כינוי ל-
setProxIntHighThresh().
הנעת LED, הגבר והגברה¶
- getLEDDrive() int¶
מחזירה את עוצמת הנעת ה-LED המשמשת לקרבה ול-ALS. מקודדת כאחד מערכי ה-
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
מגדירה את עוצמת הנעת ה-LED המשמשת לקרבה ול-ALS.
driveהוא אחד מערכי ה-APDS9960_LED_DRIVE_*.
- getProximityGain() int¶
מחזירה את הגבר מקלט הקרבה. מקודד כאחד מערכי ה-
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
מגדירה את הגבר מקלט הקרבה.
driveהוא אחד מערכי ה-APDS9960_PGAIN_*.
- getAmbientLightGain() int¶
מחזירה את הגבר חיישן אור הסביבה. מקודד כאחד מערכי ה-
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
מגדירה את הגבר חיישן אור הסביבה.
driveהוא אחד מערכי ה-APDS9960_AGAIN_*.
פיצוי הגבר קרבה ומסכת פוטו-דיודות¶
תצורת מחוות¶
- getGestureGain() int¶
מחזירה את הגבר הפוטו-דיודות המשמש במצב מחוות. מקודד כאחד מערכי ה-
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
מחזירה את זרם הנעת ה-LED המשמש במצב מחוות. מקודד כאחד מערכי ה-
APDS9960_LED_DRIVE_*.
ספי פסיקה לאור סביבה¶
איפשורי וניקויי פסיקות¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
תת-מחלקה של MicroPython של
APDS9960. ה-API הציבורי זהה, אך הגישה לאוגרים הבסיסית משתמשת בקריאותreadfrom_memו-writeto_memבסגנוןmachine.I2Cולא בשיטות בסגנון SMBus. זוהי המחלקה שיש להשתמש בה ביעדי OpenMV / MicroPython.
חריגות¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
תת-מחלקה של
ValueError. מועלית על-ידי הבנאי שלAPDS9960כאשר הערך הנקרא מאוגר הזיהוי של השבב אינו קיים ברשימתvalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
תת-מחלקה של
ValueError. מועלית על-ידיAPDS9960.setMode()כאשר הארגומנטmodeמחוץ לטווחAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
קבועים¶
כתובת I2C ומזהי התקן¶
כוונון מחוות¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
עוצמת הדגימה המינימלית (לכל פוטו-דיודה) המשמשת את מפענח המחוות בעת חיפוש דגימות ה-FIFO הראשונות/האחרונות שבטווח.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
סף על הפרשי ה-U/D וה-L/R המצטברים שמעליו המפענח מתחייב לכיוון החלקה.
מצבי מאפיין¶
ערכים אלה מועברים אל APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
ערך-זקיף (
7) המורה ל-APDS9960.setMode()לאפשר או לנטרל כל סיבית באוגר ה-ENABLE בבת אחת.
זרמי הנעת LED¶
הגבר קרבה (PGAIN)¶
הגבר אור סביבה (AGAIN)¶
הגבר מחוות (GGAIN)¶
הגברת LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
הגברת LED של 300% (
3). מוחל אוטומטית על-ידיAPDS9960.enableGestureSensor().
זמני המתנה למחוות¶
כיווני מחוות¶
ערכים אלה מוחזרים על-ידי APDS9960.readGesture().
מצבי מחוות¶
ערכי מצב פנימיים המדווחים דרך מכונת המצבים של המחוות.