apds9960 — közelség-, gesztus- és színérzékelő illesztőprogram

Ez a modul illesztőprogramot biztosít a Broadcom/Avago APDS9960 digitális közelség-, környezeti fény-, RGB-szín- és gesztusérzékelőhöz I2C-n keresztül. Az illesztőprogram funkciónkénti engedélyező/letiltó vezérlőket, nyers csatorna-olvasásokat (clear, R, G, B, közelség) és egy szoftveres gesztusdekódoló állapotgépet tesz elérhetővé, amely a felfelé/lefelé/balra/jobbra húzást, valamint a közeli/távoli gesztusokat osztályozza a chipen lévő 4-fotodiódás FIFO-ból.

Példa használat:

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)

Osztályok

class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])

Létrehoz egy APDS9960 illesztőprogram-példányt.

  • A bus egy beállított I2C-buszobjektum, amelyet az érzékelővel való kommunikációra használ. Az alaposztály SMBus-stílusú read_byte_data, write_byte_data és read_i2c_block_data hívásokat ad ki; a MicroPython machine.I2C esetén használja helyette a uAPDS9960 osztályt.

  • Az address az eszköz 7 bites I2C-címe. Alapértelmezett értéke APDS9960_I2C_ADDR (0x39).

  • A valid_id a chip ID-regiszteréből visszaadott elfogadható értékek listája. Alapértelmezett értéke APDS9960_DEV_ID.

A konstruktor beolvassa az eszköz-ID-t, és ADPS9960InvalidDevId kivételt vált ki, ha az nem szerepel a valid_id listában. Ezután letilt minden funkciót, beprogramozza az alapértelmezett ATIME/WTIME/PPULSE értékeket, és alkalmazza az alapértelmezett LED-meghajtást, közelségi erősítést, ALS-erősítést, közelségi küszöbértékeket, környezeti fény küszöbértékeket, perzisztenciát és gesztusmotor-konfigurációt (be-/kilépési küszöbértékek, GCONF1, gesztuserősítés, gesztus LED-meghajtás, gesztusvárakozási idő, gesztuseltolások, GPULSE, GCONF3 és gesztusmegszakítás-engedélyezés).

Mód- és tápvezérlés

getMode() int

Visszaadja az ENABLE regiszter nyers értékét, amely azt kódolja, hogy jelenleg mely funkciók vannak engedélyezve (táp, ALS, közelség, várakozás, ALS-megszakítás, közelségi megszakítás, gesztus).

setMode(mode: int, enable: bool = True) None

Engedélyez vagy letilt egy egyedi funkciót az ENABLE regiszterben. A mode értéknek a APDS9960_MODE_* értékek egyikének kell lennie (APDS9960_MODE_POWER ..\ APDS9960_MODE_ALL). Ha a mode értéke APDS9960_MODE_ALL, az összes bit egyszerre kapcsol be vagy ki. Tartományon kívüli értékek esetén ADPS9960InvalidMode kivételt vált ki.

enablePower() None

Bekapcsolja az APDS9960-at (beállítja a PON bitet az ENABLE regiszterben).

disablePower() None

Kikapcsolja az APDS9960-at (törli a PON bitet az ENABLE regiszterben).

Környezeti fény / RGB érzékelő

enableLightSensor(interrupts: bool = True) None

Visszaállítja az alapértelmezett ALS-erősítést, beállítja az ALS-megszakítás engedélyező bitjét, bekapcsolja az eszközt, és engedélyezi a környezeti fény / szín motort.

disableLightSensor() None

Letiltja az ALS-megszakítást, és leállítja a környezeti fény / szín motort.

readAmbientLight() int

Beolvassa a clear-csatorna környezeti fényszintjét 16 bites előjel nélküli értékként.

readRedLight() int

Beolvassa a vörös csatorna szintjét 16 bites előjel nélküli értékként.

readGreenLight() int

Beolvassa a zöld csatorna szintjét 16 bites előjel nélküli értékként.

readBlueLight() int

Beolvassa a kék csatorna szintjét 16 bites előjel nélküli értékként.

Közelségérzékelő

enableProximitySensor(interrupts: bool = True) None

Visszaállítja az alapértelmezett közelségi erősítést és LED-meghajtást, beállítja a közelségi megszakítás engedélyező bitjét, bekapcsolja az eszközt, és engedélyezi a közelségmotort.

disableProximitySensor() None

Letiltja a közelségi megszakítást, és leállítja a közelségmotort.

readProximity() int

Beolvassa a közelségszintet 8 bites előjel nélküli értékként.

Gesztusmotor

enableGestureSensor(interrupts: bool = True) None

Visszaállítja a gesztusállapotot, beállítja a WTIME-ot és a gesztusimpulzus-számot, 300%-ra emeli a LED-et, beállítja a gesztusmegszakítás engedélyező bitjét, belép a gesztusállapotgépbe, bekapcsolja az eszközt, és engedélyezi a várakozási, közelségi és gesztusmódot.

disableGestureSensor() None

Visszaállítja a gesztusállapotot, letiltja a gesztusmegszakítást és az állapotgépet, és leállítja a gesztusmotort.

isGestureAvailable() bool

True értéket ad vissza, ha a gesztusállapot-regiszter GVALID bitje be van állítva, jelezve, hogy a gesztus-FIFO adatai készen állnak a beolvasásra.

readGesture() int

Kiüríti a gesztus-FIFO-t, lefuttatja a beépített gesztusdekódolót, és visszaadja a APDS9960_DIR_* iránykonstansok egyikét. A APDS9960_DIR_NONE értéket adja vissza, ha a motor nem fut, nincs érvényes adat, vagy az adatok nem oldódtak fel felismert gesztussá.

resetGestureParameters() None

Törli a belső gesztus-FIFO puffert, a deltákat, a számlálókat, a közeli/távoli számlálókat, az állapotot és az utoljára dekódolt mozgást.

processGestureData() bool

Feldolgozza a jelenleg pufferelt nyers U/D/L/R FIFO-mintákat az U/D és L/R delták, valamint a közeli/távoli számlálók frissítéséhez. True értéket ad vissza, ha közeli vagy távoli eseményt észlelt, egyébként False értéket.

decodeGesture() bool

Az aktuális U/D és L/R számlálókat, valamint a felhalmozott deltákat egy iránnyá alakítja, amelyet a belső gesture_motion_ mezőben tárol. True értéket ad vissza, ha egy irány felismerésre kerül, egyébként False értéket.

Közelségi küszöbértékek

getProxIntLowThresh() int

Visszaadja az alacsony közelségi megszakítási küszöbértéket (PILT regiszter).

setProxIntLowThresh(threshold: int) None

Beállítja az alacsony közelségi megszakítási küszöbértéket.

getProxIntHighThresh() int

Visszaadja a magas közelségi megszakítási küszöbértéket (PIHT regiszter).

setProxIntHighThresh(threshold: int) None

Beállítja a magas közelségi megszakítási küszöbértéket.

getProximityIntLowThreshold() int

A getProxIntLowThresh() aliasa.

setProximityIntLowThreshold(threshold: int) None

A setProxIntLowThresh() aliasa.

getProximityIntHighThreshold() int

A getProxIntHighThresh() aliasa.

setProximityIntHighThreshold(threshold: int) None

A setProxIntHighThresh() aliasa.

LED-meghajtás, erősítés és növelés

getLEDDrive() int

Visszaadja a közelséghez és az ALS-hez használt LED-meghajtási erősséget. A APDS9960_LED_DRIVE_* értékek egyikeként kódolva (0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12,5 mA).

setLEDDrive(drive: int) None

Beállítja a közelséghez és az ALS-hez használt LED-meghajtási erősséget. A drive a APDS9960_LED_DRIVE_* értékek egyike.

getProximityGain() int

Visszaadja a közelségi vevő erősítését. A APDS9960_PGAIN_* értékek egyikeként kódolva (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setProximityGain(drive: int) None

Beállítja a közelségi vevő erősítését. A drive a APDS9960_PGAIN_* értékek egyike.

getAmbientLightGain() int

Visszaadja a környezeti fény érzékelő erősítését. A APDS9960_AGAIN_* értékek egyikeként kódolva (0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).

setAmbientLightGain(drive: int) None

Beállítja a környezeti fény érzékelő erősítését. A drive a APDS9960_AGAIN_* értékek egyike.

getLEDBoost() int

Visszaadja a LED-áram növelését. A APDS9960_LED_BOOST_* értékek egyikeként kódolva (0 = 100%, 1 = 150%, 2 = 200%, 3 = 300%).

setLEDBoost(boost: int) None

Beállítja a LED-áram növelését. A boost a APDS9960_LED_BOOST_* értékek egyike.

Közelségi erősítés kompenzációja és fotodióda-maszk

getProxGainCompEnable() bool

True értéket ad vissza, ha a közelségi erősítés kompenzációja engedélyezve van.

setProxGainCompEnable(enable: bool) None

Engedélyezi vagy letiltja a közelségi erősítés kompenzációját.

getProxPhotoMask() int

Visszaadja a letiltott közelségi fotodiódák 4 bites maszkját. A bitek leképezése: 3=UP, 2=DOWN, 1=LEFT, 0=RIGHT; az 1 letilt egy fotodiódát, a 0 pedig engedélyezi.

setProxPhotoMask(mask: int) None

Beállítja a letiltott közelségi fotodiódák 4 bites maszkját (lásd a fenti kódolást).

Gesztuskonfiguráció

getGestureEnterThresh() int

Visszaadja a gesztusmódba lépéshez szükséges közelségi küszöbértéket.

setGestureEnterThresh(threshold: int) None

Beállítja a gesztusmódba lépéshez szükséges közelségi küszöbértéket.

getGestureExitThresh() int

Visszaadja a gesztusmódból való kilépéshez szükséges közelségi küszöbértéket.

setGestureExitThresh(threshold: int) None

Beállítja a gesztusmódból való kilépéshez szükséges közelségi küszöbértéket.

getGestureGain() int

Visszaadja a gesztusmód során használt fotodióda-erősítést. A APDS9960_GGAIN_* értékek egyikeként kódolva (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setGestureGain(gain: int) None

Beállítja a gesztusmód során használt fotodióda-erősítést.

getGestureLEDDrive() int

Visszaadja a gesztusmód során használt LED-meghajtási áramot. A APDS9960_LED_DRIVE_* értékek egyikeként kódolva.

setGestureLEDDrive(drive: int) None

Beállítja a gesztusmód során használt LED-meghajtási áramot.

getGestureWaitTime() int

Visszaadja a gesztusészlelések közötti alacsony fogyasztású várakozási időt. A APDS9960_GWTIME_* értékek egyikeként kódolva (0 = 0 ms .. 7 = 39,2 ms).

setGestureWaitTime(time: int) None

Beállítja a gesztusészlelések közötti alacsony fogyasztású várakozási időt.

getGestureMode() bool

True értéket ad vissza, ha a gesztusállapotgép jelenleg fut.

setGestureMode(enable: bool) None

Belép a gesztusállapotgépbe vagy kilép belőle.

Környezeti fény megszakítási küszöbértékek

getLightIntLowThreshold() int

Visszaadja a környezeti fény megszakításához használt 16 bites alacsony küszöbértéket.

setLightIntLowThreshold(threshold: int) None

Beállítja a környezeti fény megszakításához használt 16 bites alacsony küszöbértéket.

getLightIntHighThreshold() int

Visszaadja a környezeti fény megszakításához használt 16 bites magas küszöbértéket.

setLightIntHighThreshold(threshold: int) None

Beállítja a környezeti fény megszakításához használt 16 bites magas küszöbértéket.

Megszakítás-engedélyezések és -törlések

getAmbientLightIntEnable() bool

True értéket ad vissza, ha a környezeti fény megszakítások engedélyezve vannak.

setAmbientLightIntEnable(enable: bool) None

Engedélyezi vagy letiltja a környezeti fény megszakításokat.

getProximityIntEnable() bool

True értéket ad vissza, ha a közelségi megszakítások engedélyezve vannak.

setProximityIntEnable(enable: bool) None

Engedélyezi vagy letiltja a közelségi megszakításokat.

getGestureIntEnable() bool

True értéket ad vissza, ha a gesztusmegszakítások engedélyezve vannak.

setGestureIntEnable(enable: bool) None

Engedélyezi vagy letiltja a gesztusmegszakításokat.

clearAmbientLightInt() None

Töröl egy függőben lévő környezeti fény megszakítást.

clearProximityInt() None

Töröl egy függőben lévő közelségi megszakítást.

class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])

Az APDS9960 MicroPython alosztálya. Azonos nyilvános API, de a mögöttes regiszterelérés SMBus-stílusú metódusok helyett machine.I2C-stílusú readfrom_mem és writeto_mem hívásokat használ. Ezt az osztályt kell használni OpenMV / MicroPython célplatformokon.

Kivételek

exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)

A ValueError alosztálya. Az APDS9960 konstruktor váltja ki, ha a chip ID-regiszteréből beolvasott érték nem szerepel a valid_id listában.

exception apds9960.ADPS9960InvalidMode(mode: int)

A ValueError alosztálya. Az APDS9960.setMode() váltja ki, ha a mode argumentum a APDS9960_MODE_POWER..\ APDS9960_MODE_ALL tartományon kívül esik.

Konstansok

I2C-cím és eszköz-ID-k

apds9960.APDS9960_I2C_ADDR: int

Az APDS9960 alapértelmezett 7 bites I2C-címe (0x39).

apds9960.APDS9960_DEV_ID: list

Az érvényes eszköz-ID-regiszter értékek alapértelmezett listája ([0xAB, 0x9C, 0xA8, -0x55]).

Gesztushangolás

apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int

A gesztusdekódoló által használt minimális mintamagnitúdó (fotodiódánként) az első/utolsó tartományon belüli FIFO-minták keresésekor.

apds9960.APDS9960_GESTURE_SENSITIVITY_1: int

Küszöbérték a felhalmozott U/D és L/R deltákon, amely felett a dekódoló elkötelezi magát egy húzási irány mellett.

apds9960.APDS9960_GESTURE_SENSITIVITY_2: int

Küszöbérték a lépésenkénti U/D és L/R deltákon, amely alatt a dekódoló egy mintát húzás helyett közeli/távoli jelöltnek tekint.

apds9960.APDS9960_TIME_FIFO_PAUSE: int

Az az ezredmásodperc, ameddig a gesztusciklus a FIFO-ürítések között alszik.

Funkciómódok

Ezeket az értékeket az APDS9960.setMode() kapja meg.

apds9960.APDS9960_MODE_POWER: int

Bekapcsolási bit (0).

apds9960.APDS9960_MODE_AMBIENT_LIGHT: int

Környezeti fény / szín motor engedélyező bit (1).

apds9960.APDS9960_MODE_PROXIMITY: int

Közelségmotor engedélyező bit (2).

apds9960.APDS9960_MODE_WAIT: int

Várakozási állapot engedélyező bit (3).

apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int

Környezeti fény megszakítás engedélyező bit (4).

apds9960.APDS9960_MODE_PROXIMITY_INT: int

Közelségi megszakítás engedélyező bit (5).

apds9960.APDS9960_MODE_GESTURE: int

Gesztusmotor engedélyező bit (6).

apds9960.APDS9960_MODE_ALL: int

Őrszem érték (7), amely az APDS9960.setMode() számára jelzi, hogy egyszerre engedélyezze vagy tiltsa le az ENABLE regiszter összes bitjét.

LED-meghajtási áramok

apds9960.APDS9960_LED_DRIVE_100MA: int

100 mA-es LED-meghajtás (0).

apds9960.APDS9960_LED_DRIVE_50MA: int

50 mA-es LED-meghajtás (1).

apds9960.APDS9960_LED_DRIVE_25MA: int

25 mA-es LED-meghajtás (2).

apds9960.APDS9960_LED_DRIVE_12_5MA: int

12,5 mA-es LED-meghajtás (3).

Közelségi erősítés (PGAIN)

apds9960.APDS9960_PGAIN_1X: int

1x közelségi erősítés (0).

apds9960.APDS9960_PGAIN_2X: int

2x közelségi erősítés (1).

apds9960.APDS9960_PGAIN_4X: int

4x közelségi erősítés (2). A konstruktor által alkalmazott alapérték.

apds9960.APDS9960_PGAIN_8X: int

8x közelségi erősítés (3).

Környezeti fény erősítés (AGAIN)

apds9960.APDS9960_AGAIN_1X: int

1x ALS-erősítés (0).

apds9960.APDS9960_AGAIN_4X: int

4x ALS-erősítés (1). A konstruktor által alkalmazott alapérték.

apds9960.APDS9960_AGAIN_16X: int

16x ALS-erősítés (2).

apds9960.APDS9960_AGAIN_64X: int

64x ALS-erősítés (3).

Gesztuserősítés (GGAIN)

apds9960.APDS9960_GGAIN_1X: int

1x gesztuserősítés (0).

apds9960.APDS9960_GGAIN_2X: int

2x gesztuserősítés (1).

apds9960.APDS9960_GGAIN_4X: int

4x gesztuserősítés (2). A konstruktor által alkalmazott alapérték.

apds9960.APDS9960_GGAIN_8X: int

8x gesztuserősítés (3).

LED-növelés

apds9960.APDS9960_LED_BOOST_100: int

100% LED-növelés (0).

apds9960.APDS9960_LED_BOOST_150: int

150% LED-növelés (1).

apds9960.APDS9960_LED_BOOST_200: int

200% LED-növelés (2).

apds9960.APDS9960_LED_BOOST_300: int

300% LED-növelés (3). Az APDS9960.enableGestureSensor() automatikusan alkalmazza.

Gesztusvárakozási idők

apds9960.APDS9960_GWTIME_0MS: int

0 ms (0).

apds9960.APDS9960_GWTIME_2_8MS: int

2,8 ms (1). A konstruktor által alkalmazott alapérték.

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).

Gesztusirányok

Ezeket az értékeket az APDS9960.readGesture() adja vissza.

apds9960.APDS9960_DIR_NONE: int

Nincs észlelt gesztus (0).

apds9960.APDS9960_DIR_LEFT: int

Balra húzás (1).

apds9960.APDS9960_DIR_RIGHT: int

Jobbra húzás (2).

apds9960.APDS9960_DIR_UP: int

Felfelé húzás (3).

apds9960.APDS9960_DIR_DOWN: int

Lefelé húzás (4).

apds9960.APDS9960_DIR_NEAR: int

Közeli esemény (5).

apds9960.APDS9960_DIR_FAR: int

Távoli esemény (6).

apds9960.APDS9960_DIR_ALL: int

Őrszem érték (7), amelyet belsőleg a „bármilyen irány” jelölésére használ.

Gesztusállapotok

A gesztusállapotgép által jelentett belső állapotértékek.

apds9960.APDS9960_STATE_NA: int

Nincs állapot (0).

apds9960.APDS9960_STATE_NEAR: int

Közeli állapot észlelve (1).

apds9960.APDS9960_STATE_FAR: int

Távoli állapot észlelve (2).

apds9960.APDS9960_STATE_ALL: int

Őrszem érték (3), amelyet belsőleg a „bármilyen állapot” jelölésére használ.