apds9960 — upravljački program za senzor blizine, gesta i boje#

Ovaj modul pruža upravljački program za digitalni senzor blizine, ambijentalnog svjetla, RGB boje i gesta Broadcom/Avago APDS9960 preko I2C. Upravljački program izlaže kontrole omogućavanja/onemogućavanja po značajki, čitanja sirovih kanala (clear, R, G, B, blizina) te softverski stroj stanja za dekodiranje gesta koji klasificira prelazak prema gore/dolje/lijevo/desno i geste približavanja/udaljavanja iz ugrađenog FIFO-a s 4 fotodiode.

Primjer upotrebe:

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)

Klase#

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

Konstruira instancu upravljačkog programa APDS9960.

  • bus je konfigurirani objekt I2C sabirnice koji se koristi za komunikaciju sa senzorom. Bazna klasa izdaje pozive u SMBus stilu read_byte_data, write_byte_data i read_i2c_block_data; za MicroPythonov machine.I2C umjesto toga koristite uAPDS9960.

  • address je 7-bitna I2C adresa uređaja. Zadana vrijednost je APDS9960_I2C_ADDR (0x39).

  • valid_id je popis prihvatljivih vrijednosti koje vraća ID registar čipa. Zadana vrijednost je APDS9960_DEV_ID.

Konstruktor čita ID uređaja i izaziva ADPS9960InvalidDevId ako se on ne nalazi u valid_id. Zatim onemogućuje svaku značajku, programira zadane vrijednosti ATIME/WTIME/PPULSE te primjenjuje zadane postavke LED pogona, pojačanja blizine, ALS pojačanja, pragova blizine, pragova ambijentalnog svjetla, postojanosti i konfiguracije stroja za geste (ulazni/izlazni pragovi, GCONF1, pojačanje gesta, LED pogon za geste, vrijeme čekanja gesta, odmaci gesta, GPULSE, GCONF3 i omogućavanje prekida gesta).

Kontrola načina rada i napajanja#

getMode() int#

Vraća sirovu vrijednost registra ENABLE, koja kodira koje su značajke trenutno omogućene (napajanje, ALS, blizina, čekanje, ALS prekid, prekid blizine, geste).

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

Omogućuje ili onemogućuje pojedinačnu značajku u registru ENABLE. mode mora biti jedna od vrijednosti APDS9960_MODE_* (APDS9960_MODE_POWER ..\ APDS9960_MODE_ALL). Kada je mode jednak APDS9960_MODE_ALL, svi se bitovi uključuju ili isključuju odjednom. Izaziva ADPS9960InvalidMode za vrijednosti izvan raspona.

enablePower() None#

Uključuje napajanje APDS9960 (postavlja PON bit u ENABLE).

disablePower() None#

Isključuje napajanje APDS9960 (briše PON bit u ENABLE).

Senzor ambijentalnog svjetla / RGB#

enableLightSensor(interrupts: bool = True) None#

Vraća zadano ALS pojačanje, konfigurira bit za omogućavanje ALS prekida, uključuje napajanje uređaja i omogućuje stroj za ambijentalno svjetlo/boju.

disableLightSensor() None#

Onemogućuje ALS prekid i zaustavlja stroj za ambijentalno svjetlo/boju.

readAmbientLight() int#

Čita razinu ambijentalnog svjetla clear-kanala kao 16-bitnu vrijednost bez predznaka.

readRedLight() int#

Čita razinu crvenog kanala kao 16-bitnu vrijednost bez predznaka.

readGreenLight() int#

Čita razinu zelenog kanala kao 16-bitnu vrijednost bez predznaka.

readBlueLight() int#

Čita razinu plavog kanala kao 16-bitnu vrijednost bez predznaka.

Senzor blizine#

enableProximitySensor(interrupts: bool = True) None#

Vraća zadano pojačanje blizine i LED pogon, konfigurira bit za omogućavanje prekida blizine, uključuje napajanje uređaja i omogućuje stroj za blizinu.

disableProximitySensor() None#

Onemogućuje prekid blizine i zaustavlja stroj za blizinu.

readProximity() int#

Čita razinu blizine kao 8-bitnu vrijednost bez predznaka.

Stroj za geste#

enableGestureSensor(interrupts: bool = True) None#

Resetira stanje gesta, postavlja WTIME i broj impulsa gesta, pojačava LED na 300%, konfigurira bit za omogućavanje prekida gesta, ulazi u stroj stanja za geste, uključuje napajanje uređaja i omogućuje načine čekanja, blizine i gesta.

disableGestureSensor() None#

Resetira stanje gesta, onemogućuje prekid gesta i stroj stanja te zaustavlja stroj za geste.

isGestureAvailable() bool#

Vraća True ako je postavljen GVALID bit registra statusa gesta, što označava da su FIFO podaci gesta spremni za čitanje.

readGesture() int#

Prazni FIFO gesta, pokreće ugrađeni dekoder gesta i vraća jednu od smjernih konstanti APDS9960_DIR_*. Vraća APDS9960_DIR_NONE ako stroj ne radi, ako nema dostupnih valjanih podataka ili ako se podaci nisu razriješili u prepoznatu gestu.

resetGestureParameters() None#

Briše interni međuspremnik FIFO-a gesta, delte, brojeve, brojače približavanja/udaljavanja, stanje i posljednje dekodirano kretanje.

processGestureData() bool#

Obrađuje sirove U/D/L/R FIFO uzorke trenutno u međuspremniku kako bi ažurirao U/D i L/R delte te brojače približavanja/udaljavanja. Vraća True ako je otkriven događaj približavanja ili udaljavanja, inače False.

decodeGesture() bool#

Pretvara trenutne U/D i L/R brojeve i akumulirane delte u smjer pohranjen u internom polju gesture_motion_. Vraća True kada je smjer prepoznat, inače False.

Pragovi blizine#

getProxIntLowThresh() int#

Vraća niski prag prekida blizine (registar PILT).

setProxIntLowThresh(threshold: int) None#

Postavlja niski prag prekida blizine.

getProxIntHighThresh() int#

Vraća visoki prag prekida blizine (registar PIHT).

setProxIntHighThresh(threshold: int) None#

Postavlja visoki prag prekida blizine.

getProximityIntLowThreshold() int#

Alias za getProxIntLowThresh().

setProximityIntLowThreshold(threshold: int) None#

Alias za setProxIntLowThresh().

getProximityIntHighThreshold() int#

Alias za getProxIntHighThresh().

setProximityIntHighThreshold(threshold: int) None#

Alias za setProxIntHighThresh().

LED pogon, pojačanje i pojačavanje#

getLEDDrive() int#

Vraća snagu LED pogona koja se koristi za blizinu i ALS. Kodirana kao jedna od vrijednosti APDS9960_LED_DRIVE_* (0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).

setLEDDrive(drive: int) None#

Postavlja snagu LED pogona koja se koristi za blizinu i ALS. drive je jedna od vrijednosti APDS9960_LED_DRIVE_*.

getProximityGain() int#

Vraća pojačanje prijemnika blizine. Kodirano kao jedna od vrijednosti APDS9960_PGAIN_* (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setProximityGain(drive: int) None#

Postavlja pojačanje prijemnika blizine. drive je jedna od vrijednosti APDS9960_PGAIN_*.

getAmbientLightGain() int#

Vraća pojačanje senzora ambijentalnog svjetla. Kodirano kao jedna od vrijednosti APDS9960_AGAIN_* (0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).

setAmbientLightGain(drive: int) None#

Postavlja pojačanje senzora ambijentalnog svjetla. drive je jedna od vrijednosti APDS9960_AGAIN_*.

getLEDBoost() int#

Vraća pojačavanje struje LED-a. Kodirano kao jedna od vrijednosti APDS9960_LED_BOOST_* (0 = 100%, 1 = 150%, 2 = 200%, 3 = 300%).

setLEDBoost(boost: int) None#

Postavlja pojačavanje struje LED-a. boost je jedna od vrijednosti APDS9960_LED_BOOST_*.

Kompenzacija pojačanja blizine i maska fotodioda#

getProxGainCompEnable() bool#

Vraća True ako je kompenzacija pojačanja blizine omogućena.

setProxGainCompEnable(enable: bool) None#

Omogućuje ili onemogućuje kompenzaciju pojačanja blizine.

getProxPhotoMask() int#

Vraća 4-bitnu masku onemogućenih fotodioda blizine. Bitovi se preslikavaju kao 3=UP, 2=DOWN, 1=LEFT, 0=RIGHT; 1 onemogućuje fotodiodu, a 0 je omogućuje.

setProxPhotoMask(mask: int) None#

Postavlja 4-bitnu masku onemogućenih fotodioda blizine (vidi kodiranje gore).

Konfiguracija gesta#

getGestureEnterThresh() int#

Vraća prag blizine potreban za ulazak u način rada s gestama.

setGestureEnterThresh(threshold: int) None#

Postavlja prag blizine potreban za ulazak u način rada s gestama.

getGestureExitThresh() int#

Vraća prag blizine potreban za izlazak iz načina rada s gestama.

setGestureExitThresh(threshold: int) None#

Postavlja prag blizine potreban za izlazak iz načina rada s gestama.

getGestureGain() int#

Vraća pojačanje fotodioda koje se koristi tijekom načina rada s gestama. Kodirano kao jedna od vrijednosti APDS9960_GGAIN_* (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setGestureGain(gain: int) None#

Postavlja pojačanje fotodioda koje se koristi tijekom načina rada s gestama.

getGestureLEDDrive() int#

Vraća struju LED pogona koja se koristi tijekom načina rada s gestama. Kodirana kao jedna od vrijednosti APDS9960_LED_DRIVE_*.

setGestureLEDDrive(drive: int) None#

Postavlja struju LED pogona koja se koristi tijekom načina rada s gestama.

getGestureWaitTime() int#

Vraća vrijeme čekanja niske potrošnje između detekcija gesta. Kodirano kao jedna od vrijednosti APDS9960_GWTIME_* (0 = 0 ms .. 7 = 39.2 ms).

setGestureWaitTime(time: int) None#

Postavlja vrijeme čekanja niske potrošnje između detekcija gesta.

getGestureMode() bool#

Vraća True ako stroj stanja za geste trenutno radi.

setGestureMode(enable: bool) None#

Ulazi u stroj stanja za geste ili izlazi iz njega.

Pragovi prekida ambijentalnog svjetla#

getLightIntLowThreshold() int#

Vraća 16-bitni niski prag koji se koristi za prekid ambijentalnog svjetla.

setLightIntLowThreshold(threshold: int) None#

Postavlja 16-bitni niski prag koji se koristi za prekid ambijentalnog svjetla.

getLightIntHighThreshold() int#

Vraća 16-bitni visoki prag koji se koristi za prekid ambijentalnog svjetla.

setLightIntHighThreshold(threshold: int) None#

Postavlja 16-bitni visoki prag koji se koristi za prekid ambijentalnog svjetla.

Omogućavanja i brisanja prekida#

getAmbientLightIntEnable() bool#

Vraća True ako su prekidi ambijentalnog svjetla omogućeni.

setAmbientLightIntEnable(enable: bool) None#

Omogućuje ili onemogućuje prekide ambijentalnog svjetla.

getProximityIntEnable() bool#

Vraća True ako su prekidi blizine omogućeni.

setProximityIntEnable(enable: bool) None#

Omogućuje ili onemogućuje prekide blizine.

getGestureIntEnable() bool#

Vraća True ako su prekidi gesta omogućeni.

setGestureIntEnable(enable: bool) None#

Omogućuje ili onemogućuje prekide gesta.

clearAmbientLightInt() None#

Briše nepodmireni prekid ambijentalnog svjetla.

clearProximityInt() None#

Briše nepodmireni prekid blizine.

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

MicroPython podklasa klase APDS9960. Identičan javni API, ali pripadajući pristup registrima koristi pozive u stilu machine.I2C readfrom_mem i writeto_mem umjesto metoda u SMBus stilu. Ovo je klasa koju treba koristiti na OpenMV / MicroPython ciljnim uređajima.

Iznimke#

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

Podklasa klase ValueError. Izaziva je konstruktor klase APDS9960 kada vrijednost pročitana iz ID registra čipa nije prisutna u popisu valid_id.

exception apds9960.ADPS9960InvalidMode(mode: int)#

Podklasa klase ValueError. Izaziva je APDS9960.setMode() kada je argument mode izvan raspona APDS9960_MODE_POWER..\ APDS9960_MODE_ALL.

Konstante#

I2C adresa i ID-ovi uređaja#

apds9960.APDS9960_I2C_ADDR: int#

Zadana 7-bitna I2C adresa APDS9960 (0x39).

apds9960.APDS9960_DEV_ID: list#

Zadani popis valjanih vrijednosti ID registra uređaja ([0xAB, 0x9C, 0xA8, -0x55]).

Podešavanje gesta#

apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int#

Minimalna magnituda uzorka (po fotodiodi) koju koristi dekoder gesta pri traženju prvih/posljednjih FIFO uzoraka unutar raspona.

apds9960.APDS9960_GESTURE_SENSITIVITY_1: int#

Prag na akumuliranim U/D i L/R deltama iznad kojeg se dekoder opredjeljuje za smjer prelaska.

apds9960.APDS9960_GESTURE_SENSITIVITY_2: int#

Prag na U/D i L/R deltama po koraku ispod kojeg dekoder smatra uzorak kandidatom za približavanje/udaljavanje, a ne za prelazak.

apds9960.APDS9960_TIME_FIFO_PAUSE: int#

Milisekunde koliko petlja gesta miruje između pražnjenja FIFO-a.

Načini rada značajki#

Ove se vrijednosti prosljeđuju metodi APDS9960.setMode().

apds9960.APDS9960_MODE_POWER: int#

Bit za uključivanje napajanja (0).

apds9960.APDS9960_MODE_AMBIENT_LIGHT: int#

Bit za omogućavanje stroja za ambijentalno svjetlo/boju (1).

apds9960.APDS9960_MODE_PROXIMITY: int#

Bit za omogućavanje stroja za blizinu (2).

apds9960.APDS9960_MODE_WAIT: int#

Bit za omogućavanje stanja čekanja (3).

apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int#

Bit za omogućavanje prekida ambijentalnog svjetla (4).

apds9960.APDS9960_MODE_PROXIMITY_INT: int#

Bit za omogućavanje prekida blizine (5).

apds9960.APDS9960_MODE_GESTURE: int#

Bit za omogućavanje stroja za geste (6).

apds9960.APDS9960_MODE_ALL: int#

Stražarska vrijednost (7) koja metodi APDS9960.setMode() govori da odjednom omogući ili onemogući svaki bit u registru ENABLE.

Struje LED pogona#

apds9960.APDS9960_LED_DRIVE_100MA: int#

100 mA LED pogon (0).

apds9960.APDS9960_LED_DRIVE_50MA: int#

50 mA LED pogon (1).

apds9960.APDS9960_LED_DRIVE_25MA: int#

25 mA LED pogon (2).

apds9960.APDS9960_LED_DRIVE_12_5MA: int#

12.5 mA LED pogon (3).

Pojačanje blizine (PGAIN)#

apds9960.APDS9960_PGAIN_1X: int#

1x pojačanje blizine (0).

apds9960.APDS9960_PGAIN_2X: int#

2x pojačanje blizine (1).

apds9960.APDS9960_PGAIN_4X: int#

4x pojačanje blizine (2). Zadana vrijednost koju primjenjuje konstruktor.

apds9960.APDS9960_PGAIN_8X: int#

8x pojačanje blizine (3).

Pojačanje ambijentalnog svjetla (AGAIN)#

apds9960.APDS9960_AGAIN_1X: int#

1x ALS pojačanje (0).

apds9960.APDS9960_AGAIN_4X: int#

4x ALS pojačanje (1). Zadana vrijednost koju primjenjuje konstruktor.

apds9960.APDS9960_AGAIN_16X: int#

16x ALS pojačanje (2).

apds9960.APDS9960_AGAIN_64X: int#

64x ALS pojačanje (3).

Pojačanje gesta (GGAIN)#

apds9960.APDS9960_GGAIN_1X: int#

1x pojačanje gesta (0).

apds9960.APDS9960_GGAIN_2X: int#

2x pojačanje gesta (1).

apds9960.APDS9960_GGAIN_4X: int#

4x pojačanje gesta (2). Zadana vrijednost koju primjenjuje konstruktor.

apds9960.APDS9960_GGAIN_8X: int#

8x pojačanje gesta (3).

Pojačavanje LED-a#

apds9960.APDS9960_LED_BOOST_100: int#

100% pojačavanje LED-a (0).

apds9960.APDS9960_LED_BOOST_150: int#

150% pojačavanje LED-a (1).

apds9960.APDS9960_LED_BOOST_200: int#

200% pojačavanje LED-a (2).

apds9960.APDS9960_LED_BOOST_300: int#

300% pojačavanje LED-a (3). Automatski ga primjenjuje APDS9960.enableGestureSensor().

Vremena čekanja gesta#

apds9960.APDS9960_GWTIME_0MS: int#

0 ms (0).

apds9960.APDS9960_GWTIME_2_8MS: int#

2.8 ms (1). Zadana vrijednost koju primjenjuje konstruktor.

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

Smjerovi gesta#

Ove vrijednosti vraća APDS9960.readGesture().

apds9960.APDS9960_DIR_NONE: int#

Nije otkrivena gesta (0).

apds9960.APDS9960_DIR_LEFT: int#

Prelazak ulijevo (1).

apds9960.APDS9960_DIR_RIGHT: int#

Prelazak udesno (2).

apds9960.APDS9960_DIR_UP: int#

Prelazak prema gore (3).

apds9960.APDS9960_DIR_DOWN: int#

Prelazak prema dolje (4).

apds9960.APDS9960_DIR_NEAR: int#

Događaj približavanja (5).

apds9960.APDS9960_DIR_FAR: int#

Događaj udaljavanja (6).

apds9960.APDS9960_DIR_ALL: int#

Stražarska vrijednost (7) koja se interno koristi za predstavljanje „bilo kojeg smjera”.

Stanja gesta#

Interne vrijednosti stanja koje izvještava stroj stanja za geste.

apds9960.APDS9960_STATE_NA: int#

Bez stanja (0).

apds9960.APDS9960_STATE_NEAR: int#

Otkriveno stanje približavanja (1).

apds9960.APDS9960_STATE_FAR: int#

Otkriveno stanje udaljavanja (2).

apds9960.APDS9960_STATE_ALL: int#

Stražarska vrijednost (3) koja se interno koristi za predstavljanje „bilo kojeg stanja”.