apds9960 — driver pentru senzor de proximitate, gesturi și culoare¶
Acest modul oferă un driver pentru senzorul digital de proximitate, lumină ambientală, culoare RGB și gesturi Broadcom/Avago APDS9960, prin I2C. Driverul expune comenzi de activare/dezactivare per caracteristică, citiri brute ale canalelor (clear, R, G, B, proximitate) și o mașină de stare software de decodare a gesturilor care clasifică glisările în sus/jos/stânga/dreapta și gesturile de apropiere/depărtare din FIFO-ul cu 4 fotodiode de pe cip.
Exemplu de utilizare:
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)
Clase¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Construiește o instanță de driver APDS9960.
buseste un obiect de magistrală I2C configurat, utilizat pentru a comunica cu senzorul. Clasa de bază emite apeluri de tip SMBusread_byte_data,write_byte_datașiread_i2c_block_data; pentrumachine.I2Cdin MicroPython utilizați în schimbuAPDS9960.addresseste adresa I2C pe 7 biți a dispozitivului. Implicit esteAPDS9960_I2C_ADDR(0x39).valid_ideste o listă de valori acceptabile returnate de registrul de ID al cipului. Implicit esteAPDS9960_DEV_ID.
Constructorul citește ID-ul dispozitivului și generează
ADPS9960InvalidDevIddacă acesta nu se află învalid_id. Apoi dezactivează fiecare caracteristică, programează valorile implicite ATIME/WTIME/PPULSE și aplică configurațiile implicite pentru curentul LED, amplificarea (gain) de proximitate, amplificarea (gain) ALS, pragurile de proximitate, pragurile de lumină ambientală, persistența și configurarea motorului de gesturi (praguri de intrare/ieșire, GCONF1, amplificarea (gain) gesturilor, curentul LED al gesturilor, timpul de așteptare al gesturilor, decalajele gesturilor, GPULSE, GCONF3 și activarea întreruperii de gesturi).Controlul modului și al alimentării¶
- getMode() int¶
Returnează valoarea brută a registrului ENABLE, care codifică ce caracteristici sunt activate în prezent (alimentare, ALS, proximitate, așteptare, întrerupere ALS, întrerupere de proximitate, gesturi).
- setMode(mode: int, enable: bool = True) None¶
Activează sau dezactivează o caracteristică individuală în registrul ENABLE.
modetrebuie să fie una dintre valorileAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). Atunci cândmodeesteAPDS9960_MODE_ALL, toți biții sunt activați sau dezactivați simultan. GenereazăADPS9960InvalidModepentru valori în afara intervalului.
Senzor de lumină ambientală / RGB¶
- enableLightSensor(interrupts: bool = True) None¶
Restabilește amplificarea (gain) ALS implicită, configurează bitul de activare a întreruperii ALS, pornește dispozitivul și activează motorul de lumină ambientală/culoare.
- disableLightSensor() None¶
Dezactivează întreruperea ALS și oprește motorul de lumină ambientală/culoare.
Senzor de proximitate¶
- enableProximitySensor(interrupts: bool = True) None¶
Restabilește amplificarea (gain) de proximitate și curentul LED implicite, configurează bitul de activare a întreruperii de proximitate, pornește dispozitivul și activează motorul de proximitate.
Motorul de gesturi¶
- enableGestureSensor(interrupts: bool = True) None¶
Resetează starea gesturilor, setează WTIME și numărul de impulsuri ale gesturilor, mărește LED-ul la 300%, configurează bitul de activare a întreruperii de gesturi, intră în mașina de stare a gesturilor, pornește dispozitivul și activează modurile de așteptare, proximitate și gesturi.
- disableGestureSensor() None¶
Resetează starea gesturilor, dezactivează întreruperea de gesturi și mașina de stare și oprește motorul de gesturi.
- isGestureAvailable() bool¶
Returnează
Truedacă bitul GVALID al registrului de stare a gesturilor este setat, indicând faptul că datele din FIFO-ul de gesturi sunt gata pentru a fi citite.
- readGesture() int¶
Golește FIFO-ul de gesturi, rulează decodorul de gesturi integrat și returnează una dintre constantele de direcție
APDS9960_DIR_*. ReturneazăAPDS9960_DIR_NONEdacă motorul nu rulează, dacă nu sunt disponibile date valide sau dacă datele nu au putut fi rezolvate într-un gest recunoscut.
- resetGestureParameters() None¶
Șterge tamponul (buffer) FIFO intern de gesturi, deltele, contoarele, contoarele de apropiere/depărtare, starea și ultima mișcare decodată.
Praguri de proximitate¶
- getProxIntLowThresh() int¶
Returnează pragul scăzut al întreruperii de proximitate (registrul PILT).
- getProxIntHighThresh() int¶
Returnează pragul ridicat al întreruperii de proximitate (registrul PIHT).
- getProximityIntLowThreshold() int¶
Alias pentru
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias pentru
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias pentru
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias pentru
setProxIntHighThresh().
Curentul LED, amplificarea (gain) și boost-ul¶
- getLEDDrive() int¶
Returnează intensitatea curentului LED utilizat pentru proximitate și ALS. Codificată ca una dintre valorile
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
Setează intensitatea curentului LED utilizat pentru proximitate și ALS.
driveeste una dintre valorileAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Returnează amplificarea (gain) receptorului de proximitate. Codificată ca una dintre valorile
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Setează amplificarea (gain) receptorului de proximitate.
driveeste una dintre valorileAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Returnează amplificarea (gain) senzorului de lumină ambientală. Codificată ca una dintre valorile
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Setează amplificarea (gain) senzorului de lumină ambientală.
driveeste una dintre valorileAPDS9960_AGAIN_*.
Compensarea amplificării (gain) de proximitate și masca de fotodiode¶
- getProxGainCompEnable() bool¶
Returnează
Truedacă compensarea amplificării (gain) de proximitate este activată.
- setProxGainCompEnable(enable: bool) None¶
Activează sau dezactivează compensarea amplificării (gain) de proximitate.
Configurarea gesturilor¶
- getGestureEnterThresh() int¶
Returnează pragul de proximitate necesar pentru a intra în modul de gesturi.
- setGestureEnterThresh(threshold: int) None¶
Setează pragul de proximitate necesar pentru a intra în modul de gesturi.
- getGestureExitThresh() int¶
Returnează pragul de proximitate necesar pentru a ieși din modul de gesturi.
- setGestureExitThresh(threshold: int) None¶
Setează pragul de proximitate necesar pentru a ieși din modul de gesturi.
- getGestureGain() int¶
Returnează amplificarea (gain) fotodiodelor utilizată în modul de gesturi. Codificată ca una dintre valorile
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setGestureGain(gain: int) None¶
Setează amplificarea (gain) fotodiodelor utilizată în modul de gesturi.
- getGestureLEDDrive() int¶
Returnează curentul LED utilizat în modul de gesturi. Codificat ca una dintre valorile
APDS9960_LED_DRIVE_*.
- getGestureWaitTime() int¶
Returnează timpul de așteptare în consum redus între detectările de gesturi. Codificat ca una dintre valorile
APDS9960_GWTIME_*(0 = 0 ms .. 7 = 39.2 ms).
Praguri de întrerupere pentru lumina ambientală¶
- getLightIntLowThreshold() int¶
Returnează pragul scăzut pe 16 biți utilizat pentru întreruperea de lumină ambientală.
- setLightIntLowThreshold(threshold: int) None¶
Setează pragul scăzut pe 16 biți utilizat pentru întreruperea de lumină ambientală.
Activări și ștergeri de întreruperi¶
- getAmbientLightIntEnable() bool¶
Returnează
Truedacă întreruperile de lumină ambientală sunt activate.
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Subclasă MicroPython a
APDS9960. API public identic, dar accesul subiacent la registre folosește apeluri de tipmachine.I2Creadfrom_memșiwriteto_memîn loc de metode de tip SMBus. Aceasta este clasa de utilizat pe platformele OpenMV / MicroPython.
Excepții¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Subclasă a
ValueError. Generată de constructorulAPDS9960atunci când valoarea citită din registrul de ID al cipului nu este prezentă în listavalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Subclasă a
ValueError. Generată deAPDS9960.setMode()atunci când argumentulmodese află în afara intervaluluiAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Constante¶
Adresa I2C și ID-urile dispozitivului¶
Reglarea gesturilor¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Magnitudinea minimă a eșantionului (per fotodiodă) utilizată de decodorul de gesturi atunci când caută primele/ultimele eșantioane FIFO aflate în interval.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Pragul aplicat deltelor acumulate U/D și L/R peste care decodorul stabilește o direcție de glisare.
Moduri de caracteristici¶
Aceste valori sunt transmise către APDS9960.setMode().
- apds9960.APDS9960_MODE_AMBIENT_LIGHT: int¶
Bitul de activare a motorului de lumină ambientală/culoare (
1).
- apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int¶
Bitul de activare a întreruperii de lumină ambientală (
4).
- apds9960.APDS9960_MODE_ALL: int¶
Valoare santinelă (
7) care îi indică luiAPDS9960.setMode()să activeze sau să dezactiveze simultan fiecare bit din registrul ENABLE.
Curenți LED¶
Amplificarea (gain) de proximitate (PGAIN)¶
Amplificarea (gain) de lumină ambientală (AGAIN)¶
Amplificarea (gain) gesturilor (GGAIN)¶
Boost LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Boost LED 300% (
3). Aplicat automat deAPDS9960.enableGestureSensor().
Timpi de așteptare ai gesturilor¶
Direcții de gesturi¶
Aceste valori sunt returnate de APDS9960.readGesture().
Stări de gesturi¶
Valori de stare interne raportate prin mașina de stare a gesturilor.