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) המשמש פנימית לייצוג ”כל מצב“.