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.
busje konfigurirani objekt I2C sabirnice koji se koristi za komunikaciju sa senzorom. Bazna klasa izdaje pozive u SMBus stiluread_byte_data,write_byte_datairead_i2c_block_data; za MicroPythonovmachine.I2Cumjesto toga koristiteuAPDS9960.addressje 7-bitna I2C adresa uređaja. Zadana vrijednost jeAPDS9960_I2C_ADDR(0x39).valid_idje popis prihvatljivih vrijednosti koje vraća ID registar čipa. Zadana vrijednost jeAPDS9960_DEV_ID.
Konstruktor čita ID uređaja i izaziva
ADPS9960InvalidDevIdako se on ne nalazi uvalid_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.
modemora biti jedna od vrijednostiAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). Kada jemodejednakAPDS9960_MODE_ALL, svi se bitovi uključuju ili isključuju odjednom. IzazivaADPS9960InvalidModeza vrijednosti izvan raspona.
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.
Senzor blizine¶
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
Trueako 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ćaAPDS9960_DIR_NONEako 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.
Pragovi 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.
driveje jedna od vrijednostiAPDS9960_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.
driveje jedna od vrijednostiAPDS9960_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.
driveje jedna od vrijednostiAPDS9960_AGAIN_*.
Kompenzacija pojačanja blizine i maska fotodioda¶
Konfiguracija gesta¶
- setGestureEnterThresh(threshold: int) None¶
Postavlja prag blizine potreban za ulazak u način 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).
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.
Omogućavanja i brisanja prekida¶
- 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 stilumachine.I2Creadfrom_memiwriteto_memumjesto 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 klaseAPDS9960kada vrijednost pročitana iz ID registra čipa nije prisutna u popisuvalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Podklasa klase
ValueError. Izaziva jeAPDS9960.setMode()kada je argumentmodeizvan rasponaAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Konstante¶
I2C adresa i ID-ovi uređaja¶
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.
Načini rada značajki¶
Ove se vrijednosti prosljeđuju metodi APDS9960.setMode().
- apds9960.APDS9960_MODE_AMBIENT_LIGHT: int¶
Bit za omogućavanje stroja za ambijentalno svjetlo/boju (
1).
- apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int¶
Bit za omogućavanje prekida ambijentalnog svjetla (
4).
- apds9960.APDS9960_MODE_ALL: int¶
Stražarska vrijednost (
7) koja metodiAPDS9960.setMode()govori da odjednom omogući ili onemogući svaki bit u registru ENABLE.
Struje LED pogona¶
Pojačanje blizine (PGAIN)¶
Pojačanje ambijentalnog svjetla (AGAIN)¶
Pojačanje gesta (GGAIN)¶
Pojačavanje LED-a¶
- apds9960.APDS9960_LED_BOOST_300: int¶
300% pojačavanje LED-a (
3). Automatski ga primjenjujeAPDS9960.enableGestureSensor().
Vremena čekanja gesta¶
Smjerovi gesta¶
Ove vrijednosti vraća APDS9960.readGesture().
Stanja gesta¶
Interne vrijednosti stanja koje izvještava stroj stanja za geste.