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.