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 עבור ערכים מחוץ לטווח.

enablePower() None

מפעילה את ה-APDS9960 (מגדירה את סיבית ה-PON ב-ENABLE).

disablePower() None

מכבה את ה-APDS9960 (מנקה את סיבית ה-PON ב-ENABLE).

חיישן אור סביבה / RGB

enableLightSensor(interrupts: bool = True) None

משחזרת את הגבר ה-ALS שבברירת המחדל, מגדירה את סיבית איפשור פסיקת ה-ALS, מפעילה את ההתקן, ומאפשרת את מנוע אור-הסביבה/צבע.

disableLightSensor() None

מנטרלת את פסיקת ה-ALS ועוצרת את מנוע אור-הסביבה/צבע.

readAmbientLight() int

קוראת את רמת אור הסביבה של הערוץ clear כערך 16 סיביות ללא סימן.

readRedLight() int

קוראת את רמת הערוץ האדום כערך 16 סיביות ללא סימן.

readGreenLight() int

קוראת את רמת הערוץ הירוק כערך 16 סיביות ללא סימן.

readBlueLight() int

קוראת את רמת הערוץ הכחול כערך 16 סיביות ללא סימן.

חיישן קרבה

enableProximitySensor(interrupts: bool = True) None

משחזרת את הגבר הקרבה ואת הנעת ה-LED שבברירת המחדל, מגדירה את סיבית איפשור פסיקת הקרבה, מפעילה את ההתקן, ומאפשרת את מנוע הקרבה.

disableProximitySensor() None

מנטרלת את פסיקת הקרבה ועוצרת את מנוע הקרבה.

readProximity() int

קוראת את רמת הקרבה כערך 8 סיביות ללא סימן.

מנוע מחוות

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 הפנימי של המחוות, את ההפרשים, הספירות, מוני הקרוב/רחוק, המצב, והתנועה האחרונה שפוענחה.

processGestureData() bool

מעבדת את דגימות ה-FIFO הגולמיות מסוג U/D/L/R המאוחסנות כעת כדי לעדכן את הפרשי ה-U/D וה-L/R ואת מוני הקרוב/רחוק. מחזירה True אם אירוע קרוב או רחוק זוהה, False אחרת.

decodeGesture() bool

ממירה את ספירות ה-U/D וה-L/R הנוכחיות ואת ההפרשים המצטברים לכיוון המאוחסן בשדה הפנימי gesture_motion_. מחזירה True כאשר כיוון מזוהה, False אחרת.

ספי קרבה

getProxIntLowThresh() int

מחזירה את הסף הנמוך לפסיקת קרבה (אוגר PILT).

setProxIntLowThresh(threshold: int) None

מגדירה את הסף הנמוך לפסיקת קרבה.

getProxIntHighThresh() int

מחזירה את הסף הגבוה לפסיקת קרבה (אוגר PIHT).

setProxIntHighThresh(threshold: int) None

מגדירה את הסף הגבוה לפסיקת קרבה.

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_*.

getLEDBoost() int

מחזירה את הגברת זרם ה-LED. מקודדת כאחד מערכי ה-APDS9960_LED_BOOST_* (0 = 100%, 1 = 150%, 2 = 200%, 3 = 300%).

setLEDBoost(boost: int) None

מגדירה את הגברת זרם ה-LED. boost הוא אחד מערכי ה-APDS9960_LED_BOOST_*.

פיצוי הגבר קרבה ומסכת פוטו-דיודות

getProxGainCompEnable() bool

מחזירה True אם פיצוי הגבר הקרבה מאופשר.

setProxGainCompEnable(enable: bool) None

מאפשרת או מנטרלת פיצוי הגבר קרבה.

getProxPhotoMask() int

מחזירה את המסכה בת 4 הסיביות של פוטו-דיודות הקרבה המנוטרלות. הסיביות ממופות כ-3=UP, 2=DOWN, 1=LEFT, 0=RIGHT; 1 מנטרל פוטו-דיודה ו-0 מאפשר אותה.

setProxPhotoMask(mask: int) None

מגדירה את המסכה בת 4 הסיביות של פוטו-דיודות הקרבה המנוטרלות (ראו הקידוד לעיל).

תצורת מחוות

getGestureEnterThresh() int

מחזירה את סף הקרבה הנדרש לכניסה למצב מחוות.

setGestureEnterThresh(threshold: int) None

מגדירה את סף הקרבה הנדרש לכניסה למצב מחוות.

getGestureExitThresh() int

מחזירה את סף הקרבה הנדרש ליציאה ממצב מחוות.

setGestureExitThresh(threshold: int) None

מגדירה את סף הקרבה הנדרש ליציאה ממצב מחוות.

getGestureGain() int

מחזירה את הגבר הפוטו-דיודות המשמש במצב מחוות. מקודד כאחד מערכי ה-APDS9960_GGAIN_* (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setGestureGain(gain: int) None

מגדירה את הגבר הפוטו-דיודות המשמש במצב מחוות.

getGestureLEDDrive() int

מחזירה את זרם הנעת ה-LED המשמש במצב מחוות. מקודד כאחד מערכי ה-APDS9960_LED_DRIVE_*.

setGestureLEDDrive(drive: int) None

מגדירה את זרם הנעת ה-LED המשמש במצב מחוות.

getGestureWaitTime() int

מחזירה את זמן ההמתנה בעוצמה-נמוכה בין זיהויי מחוות. מקודד כאחד מערכי ה-APDS9960_GWTIME_* (0 = 0 ms .. 7 = 39.2 ms).

setGestureWaitTime(time: int) None

מגדירה את זמן ההמתנה בעוצמה-נמוכה בין זיהויי מחוות.

getGestureMode() bool

מחזירה True אם מכונת המצבים של המחוות פועלת כעת.

setGestureMode(enable: bool) None

נכנסת אל מכונת המצבים של המחוות או יוצאת ממנה.

ספי פסיקה לאור סביבה

getLightIntLowThreshold() int

מחזירה את הסף הנמוך בן 16 הסיביות המשמש לפסיקת אור הסביבה.

setLightIntLowThreshold(threshold: int) None

מגדירה את הסף הנמוך בן 16 הסיביות המשמש לפסיקת אור הסביבה.

getLightIntHighThreshold() int

מחזירה את הסף הגבוה בן 16 הסיביות המשמש לפסיקת אור הסביבה.

setLightIntHighThreshold(threshold: int) None

מגדירה את הסף הגבוה בן 16 הסיביות המשמש לפסיקת אור הסביבה.

איפשורי וניקויי פסיקות

getAmbientLightIntEnable() bool

מחזירה True אם פסיקות אור סביבה מאופשרות.

setAmbientLightIntEnable(enable: bool) None

מאפשרת או מנטרלת פסיקות אור סביבה.

getProximityIntEnable() bool

מחזירה True אם פסיקות קרבה מאופשרות.

setProximityIntEnable(enable: bool) None

מאפשרת או מנטרלת פסיקות קרבה.

getGestureIntEnable() bool

מחזירה True אם פסיקות מחוות מאופשרות.

setGestureIntEnable(enable: bool) None

מאפשרת או מנטרלת פסיקות מחוות.

clearAmbientLightInt() None

מנקה פסיקת אור סביבה ממתינה.

clearProximityInt() None

מנקה פסיקת קרבה ממתינה.

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_I2C_ADDR: int

כתובת ה-I2C בת 7 הסיביות בברירת המחדל של ה-APDS9960 (0x39).

apds9960.APDS9960_DEV_ID: list

רשימת ברירת המחדל של ערכי אוגר מזהה-התקן תקפים ([0xAB, 0x9C, 0xA8, -0x55]).

כוונון מחוות

apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int

עוצמת הדגימה המינימלית (לכל פוטו-דיודה) המשמשת את מפענח המחוות בעת חיפוש דגימות ה-FIFO הראשונות/האחרונות שבטווח.

apds9960.APDS9960_GESTURE_SENSITIVITY_1: int

סף על הפרשי ה-U/D וה-L/R המצטברים שמעליו המפענח מתחייב לכיוון החלקה.

apds9960.APDS9960_GESTURE_SENSITIVITY_2: int

סף על הפרשי ה-U/D וה-L/R לכל צעד שמתחתיו המפענח מחשיב דגימה כמועמדת לקרוב/רחוק ולא כהחלקה.

apds9960.APDS9960_TIME_FIFO_PAUSE: int

מילישניות שלולאת המחוות ישנה בין ריקוני FIFO.

מצבי מאפיין

ערכים אלה מועברים אל APDS9960.setMode().

apds9960.APDS9960_MODE_POWER: int

סיבית הפעלה (0).

apds9960.APDS9960_MODE_AMBIENT_LIGHT: int

סיבית איפשור מנוע אור-הסביבה/צבע (1).

apds9960.APDS9960_MODE_PROXIMITY: int

סיבית איפשור מנוע הקרבה (2).

apds9960.APDS9960_MODE_WAIT: int

סיבית איפשור מצב המתנה (3).

apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int

סיבית איפשור פסיקת אור סביבה (4).

apds9960.APDS9960_MODE_PROXIMITY_INT: int

סיבית איפשור פסיקת קרבה (5).

apds9960.APDS9960_MODE_GESTURE: int

סיבית איפשור מנוע המחוות (6).

apds9960.APDS9960_MODE_ALL: int

ערך-זקיף (7) המורה ל-APDS9960.setMode() לאפשר או לנטרל כל סיבית באוגר ה-ENABLE בבת אחת.

זרמי הנעת LED

apds9960.APDS9960_LED_DRIVE_100MA: int

הנעת LED של 100 mA (0).

apds9960.APDS9960_LED_DRIVE_50MA: int

הנעת LED של 50 mA (1).

apds9960.APDS9960_LED_DRIVE_25MA: int

הנעת LED של 25 mA (2).

apds9960.APDS9960_LED_DRIVE_12_5MA: int

הנעת LED של 12.5 mA (3).

הגבר קרבה (PGAIN)

apds9960.APDS9960_PGAIN_1X: int

הגבר קרבה של 1x (0).

apds9960.APDS9960_PGAIN_2X: int

הגבר קרבה של 2x (1).

apds9960.APDS9960_PGAIN_4X: int

הגבר קרבה של 4x (2). ברירת המחדל המוחלת על-ידי הבנאי.

apds9960.APDS9960_PGAIN_8X: int

הגבר קרבה של 8x (3).

הגבר אור סביבה (AGAIN)

apds9960.APDS9960_AGAIN_1X: int

הגבר ALS של 1x (0).

apds9960.APDS9960_AGAIN_4X: int

הגבר ALS של 4x (1). ברירת המחדל המוחלת על-ידי הבנאי.

apds9960.APDS9960_AGAIN_16X: int

הגבר ALS של 16x (2).

apds9960.APDS9960_AGAIN_64X: int

הגבר ALS של 64x (3).

הגבר מחוות (GGAIN)

apds9960.APDS9960_GGAIN_1X: int

הגבר מחוות של 1x (0).

apds9960.APDS9960_GGAIN_2X: int

הגבר מחוות של 2x (1).

apds9960.APDS9960_GGAIN_4X: int

הגבר מחוות של 4x (2). ברירת המחדל המוחלת על-ידי הבנאי.

apds9960.APDS9960_GGAIN_8X: int

הגבר מחוות של 8x (3).

הגברת LED

apds9960.APDS9960_LED_BOOST_100: int

הגברת LED של 100% (0).

apds9960.APDS9960_LED_BOOST_150: int

הגברת LED של 150% (1).

apds9960.APDS9960_LED_BOOST_200: int

הגברת LED של 200% (2).

apds9960.APDS9960_LED_BOOST_300: int

הגברת LED של 300% (3). מוחל אוטומטית על-ידי APDS9960.enableGestureSensor().

זמני המתנה למחוות

apds9960.APDS9960_GWTIME_0MS: int

0 ms (0).

apds9960.APDS9960_GWTIME_2_8MS: int

2.8 ms (1). ברירת המחדל המוחלת על-ידי הבנאי.

apds9960.APDS9960_GWTIME_5_6MS: int

5.6 ms (2).

apds9960.APDS9960_GWTIME_8_4MS: int

8.4 ms (3).

apds9960.APDS9960_GWTIME_14_0MS: int

14.0 ms (4).

apds9960.APDS9960_GWTIME_22_4MS: int

22.4 ms (5).

apds9960.APDS9960_GWTIME_30_8MS: int

30.8 ms (6).

apds9960.APDS9960_GWTIME_39_2MS: int

39.2 ms (7).

כיווני מחוות

ערכים אלה מוחזרים על-ידי APDS9960.readGesture().

apds9960.APDS9960_DIR_NONE: int

לא זוהתה מחווה (0).

apds9960.APDS9960_DIR_LEFT: int

החלקה שמאלה (1).

apds9960.APDS9960_DIR_RIGHT: int

החלקה ימינה (2).

apds9960.APDS9960_DIR_UP: int

החלקה מעלה (3).

apds9960.APDS9960_DIR_DOWN: int

החלקה מטה (4).

apds9960.APDS9960_DIR_NEAR: int

אירוע קרוב (5).

apds9960.APDS9960_DIR_FAR: int

אירוע רחוק (6).

apds9960.APDS9960_DIR_ALL: int

ערך-זקיף (7) המשמש פנימית לייצוג ”כל כיוון“.

מצבי מחוות

ערכי מצב פנימיים המדווחים דרך מכונת המצבים של המחוות.

apds9960.APDS9960_STATE_NA: int

אין מצב (0).

apds9960.APDS9960_STATE_NEAR: int

זוהה מצב קרוב (1).

apds9960.APDS9960_STATE_FAR: int

זוהה מצב רחוק (2).

apds9960.APDS9960_STATE_ALL: int

ערך-זקיף (3) המשמש פנימית לייצוג ”כל מצב“.