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