apds9960 — ovladač senzoru přiblížení, gest a barvy¶
Tento modul poskytuje ovladač pro digitální senzor přiblížení, okolního světla, RGB barvy a gest Broadcom/Avago APDS9960 přes I2C. Ovladač zpřístupňuje ovládací prvky pro povolení/zakázání jednotlivých funkcí, čtení surových kanálů (clear, R, G, B, přiblížení) a softwarový stavový automat pro dekódování gest, který z čipového FIFO se 4 fotodiodami klasifikuje gesta přejetí nahoru/dolů/vlevo/vpravo a blízko/daleko.
Příklad použití:
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)
Třídy¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Vytvoří instanci ovladače APDS9960.
busje nakonfigurovaný objekt I2C sběrnice používaný pro komunikaci se senzorem. Základní třída provádí voláníread_byte_data,write_byte_dataaread_i2c_block_datave stylu SMBus; promachine.I2CMicroPythonu použijte místo tohouAPDS9960.addressje 7bitová I2C adresa zařízení. Výchozí hodnota jeAPDS9960_I2C_ADDR(0x39).valid_idje seznam přijatelných hodnot vracených ID registrem čipu. Výchozí hodnota jeAPDS9960_DEV_ID.
Konstruktor přečte ID zařízení a vyvolá
ADPS9960InvalidDevId, pokud není vvalid_id. Poté zakáže každou funkci, naprogramuje výchozí hodnoty ATIME/WTIME/PPULSE a aplikuje výchozí buzení LED, zisk přiblížení, zisk ALS, prahy přiblížení, prahy okolního světla, perzistenci a konfiguraci enginu gest (vstupní/výstupní prahy, GCONF1, zisk gest, buzení LED pro gesta, dobu čekání gest, offsety gest, GPULSE, GCONF3 a povolení přerušení gest).Řízení režimu a napájení¶
- getMode() int¶
Vrátí surovou hodnotu registru ENABLE, kódující, které funkce jsou aktuálně povoleny (napájení, ALS, přiblížení, čekání, přerušení ALS, přerušení přiblížení, gesta).
- setMode(mode: int, enable: bool = True) None¶
Povolí nebo zakáže jednotlivou funkci v registru ENABLE.
modemusí být jedna z hodnotAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). Je-limodeAPDS9960_MODE_ALL, všechny bity se zapnou nebo vypnou najednou. Pro hodnoty mimo rozsah vyvoláADPS9960InvalidMode.
Senzor okolního světla / RGB¶
- enableLightSensor(interrupts: bool = True) None¶
Obnoví výchozí zisk ALS, nakonfiguruje bit povolení přerušení ALS, zapne napájení zařízení a povolí engine okolního světla/barvy.
Senzor přiblížení¶
Engine gest¶
- enableGestureSensor(interrupts: bool = True) None¶
Resetuje stav gest, nastaví WTIME a počet pulzů gest, zvýší LED na 300 %, nakonfiguruje bit povolení přerušení gest, vstoupí do stavového automatu gest, zapne napájení zařízení a povolí režimy čekání, přiblížení a gest.
- disableGestureSensor() None¶
Resetuje stav gest, zakáže přerušení gest a stavový automat a zastaví engine gest.
- isGestureAvailable() bool¶
Vrátí
True, je-li nastaven bit GVALID stavového registru gest, což indikuje, že data FIFO gest jsou připravena ke čtení.
- readGesture() int¶
Vyprázdní FIFO gest, spustí vestavěný dekodér gest a vrátí jednu ze směrových konstant
APDS9960_DIR_*. VracíAPDS9960_DIR_NONE, pokud engine neběží, nejsou dostupná žádná platná data, nebo se data nevyhodnotila na rozpoznané gesto.
- resetGestureParameters() None¶
Vymaže interní buffer FIFO gest, delty, počty, čítače blízko/daleko, stav a poslední dekódovaný pohyb.
Prahy přiblížení¶
- getProximityIntLowThreshold() int¶
Alias pro
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias pro
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias pro
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias pro
setProxIntHighThresh().
Buzení LED, zisk a boost¶
- getLEDDrive() int¶
Vrátí sílu buzení LED použitou pro přiblížení a ALS. Kódováno jako jedna z hodnot
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
Nastaví sílu buzení LED použitou pro přiblížení a ALS.
driveje jedna z hodnotAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Vrátí zisk přijímače přiblížení. Kódováno jako jedna z hodnot
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Nastaví zisk přijímače přiblížení.
driveje jedna z hodnotAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Vrátí zisk senzoru okolního světla. Kódováno jako jedna z hodnot
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Nastaví zisk senzoru okolního světla.
driveje jedna z hodnotAPDS9960_AGAIN_*.
Kompenzace zisku přiblížení a maska fotodiod¶
Konfigurace gest¶
- setGestureEnterThresh(threshold: int) None¶
Nastaví práh přiblížení potřebný pro vstup do režimu gest.
- setGestureExitThresh(threshold: int) None¶
Nastaví práh přiblížení potřebný pro opuštění režimu gest.
- getGestureGain() int¶
Vrátí zisk fotodiod použitý během režimu gest. Kódováno jako jedna z hodnot
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Vrátí proud buzení LED použitý během režimu gest. Kódováno jako jedna z hodnot
APDS9960_LED_DRIVE_*.
Prahy přerušení okolního světla¶
Povolení a vymazání přerušení¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Podtřída
APDS9960pro MicroPython. Identické veřejné API, ale podkladový přístup k registrům používá voláníreadfrom_memawriteto_memve stylumachine.I2Cnamísto metod ve stylu SMBus. Toto je třída, kterou je třeba použít na cílových platformách OpenMV / MicroPython.
Výjimky¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Podtřída
ValueError. Vyvolána konstruktoremAPDS9960, když hodnota přečtená z ID registru čipu není přítomna v seznamuvalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Podtřída
ValueError. Vyvolána metodouAPDS9960.setMode(), když je argumentmodemimo rozsahAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Konstanty¶
I2C adresa a ID zařízení¶
Ladění gest¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Minimální velikost vzorku (na fotodiodu) použitá dekodérem gest při vyhledávání prvních/posledních vzorků FIFO v rozsahu.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Práh akumulovaných delt U/D a L/R, nad kterým se dekodér přikloní ke směru přejetí.
Režimy funkcí¶
Tyto hodnoty se předávají metodě APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
Sentinelová hodnota (
7) říkající metoděAPDS9960.setMode(), aby najednou povolila nebo zakázala každý bit v registru ENABLE.
Proudy buzení LED¶
Zisk přiblížení (PGAIN)¶
Zisk okolního světla (AGAIN)¶
Zisk gest (GGAIN)¶
Boost LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Boost LED 300 % (
3). Aplikováno automaticky metodouAPDS9960.enableGestureSensor().
Doby čekání gest¶
Směry gest¶
Tyto hodnoty vrací metoda APDS9960.readGesture().
Stavy gest¶
Interní stavové hodnoty hlášené stavovým automatem gest.