apds9960 — sterownik sensora zbliżeniowego, gestów i koloru¶
Ten moduł udostępnia sterownik cyfrowego sensora zbliżeniowego, światła otoczenia, koloru RGB i gestów Broadcom/Avago APDS9960 poprzez I2C. Sterownik udostępnia sterowanie włączaniem/wyłączaniem poszczególnych funkcji, surowe odczyty kanałów (clear, R, G, B, zbliżenie) oraz programową maszynę stanów dekodującą gesty, która klasyfikuje przesunięcia w górę/dół/lewo/prawo oraz gesty zbliżenia/oddalenia z wbudowanej kolejki FIFO 4 fotodiod.
Przykład użycia:
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)
Klasy¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Tworzy instancję sterownika APDS9960.
busto skonfigurowany obiekt magistrali I2C używany do komunikacji z sensorem. Klasa bazowa wywołuje metody w stylu SMBusread_byte_data,write_byte_dataorazread_i2c_block_data; dlamachine.I2Cz MicroPython należy zamiast tego użyćuAPDS9960.addressto 7-bitowy adres I2C urządzenia. DomyślnieAPDS9960_I2C_ADDR(0x39).valid_idto lista akceptowalnych wartości zwracanych przez rejestr ID układu. DomyślnieAPDS9960_DEV_ID.
Konstruktor odczytuje identyfikator urządzenia i zgłasza
ADPS9960InvalidDevId, jeśli nie znajduje się on na liścievalid_id. Następnie wyłącza każdą funkcję, programuje domyślne wartości ATIME/WTIME/PPULSE oraz stosuje domyślne ustawienia sterowania diodą LED, wzmocnienia zbliżenia, wzmocnienia ALS, progów zbliżenia, progów światła otoczenia, trwałości oraz konfiguracji silnika gestów (progi wejścia/wyjścia, GCONF1, wzmocnienie gestów, sterowanie diodą LED gestów, czas oczekiwania gestów, przesunięcia gestów, GPULSE, GCONF3 oraz włączenie przerwania gestów).Sterowanie trybem i zasilaniem¶
- getMode() int¶
Zwraca surową wartość rejestru ENABLE, kodującą, które funkcje są obecnie włączone (zasilanie, ALS, zbliżenie, oczekiwanie, przerwanie ALS, przerwanie zbliżenia, gesty).
- setMode(mode: int, enable: bool = True) None¶
Włącza lub wyłącza pojedynczą funkcję w rejestrze ENABLE.
modemusi być jedną z wartościAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). Gdymodema wartośćAPDS9960_MODE_ALL, wszystkie bity są włączane lub wyłączane jednocześnie. ZgłaszaADPS9960InvalidModedla wartości spoza zakresu.
Sensor światła otoczenia / RGB¶
- enableLightSensor(interrupts: bool = True) None¶
Przywraca domyślne wzmocnienie ALS, konfiguruje bit włączenia przerwania ALS, włącza zasilanie urządzenia oraz uruchamia silnik światła otoczenia/koloru.
Sensor zbliżeniowy¶
Silnik gestów¶
- enableGestureSensor(interrupts: bool = True) None¶
Resetuje stan gestów, ustawia WTIME i liczbę impulsów gestów, zwiększa moc diody LED do 300%, konfiguruje bit włączenia przerwania gestów, uruchamia maszynę stanów gestów, włącza zasilanie urządzenia oraz włącza tryby oczekiwania, zbliżenia i gestów.
- disableGestureSensor() None¶
Resetuje stan gestów, wyłącza przerwanie gestów i maszynę stanów oraz zatrzymuje silnik gestów.
- isGestureAvailable() bool¶
Zwraca
True, jeśli bit GVALID rejestru stanu gestów jest ustawiony, co oznacza, że dane FIFO gestów są gotowe do odczytu.
- readGesture() int¶
Opróżnia kolejkę FIFO gestów, uruchamia wbudowany dekoder gestów i zwraca jedną ze stałych kierunku
APDS9960_DIR_*. ZwracaAPDS9960_DIR_NONE, jeśli silnik nie działa, brak jest dostępnych poprawnych danych lub dane nie zostały rozpoznane jako znany gest.
- resetGestureParameters() None¶
Czyści wewnętrzny bufor FIFO gestów, różnice, liczniki, liczniki zbliżenia/oddalenia, stan oraz ostatnio zdekodowany ruch.
Progi zbliżenia¶
- getProximityIntLowThreshold() int¶
Alias dla
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias dla
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias dla
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias dla
setProxIntHighThresh().
Sterowanie diodą LED, wzmocnienie i wzmocnienie mocy¶
- getLEDDrive() int¶
Zwraca siłę sterowania diodą LED używaną dla zbliżenia i ALS. Kodowana jako jedna z wartości
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12,5 mA).
- setLEDDrive(drive: int) None¶
Ustawia siłę sterowania diodą LED używaną dla zbliżenia i ALS.
drivejest jedną z wartościAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Zwraca wzmocnienie odbiornika zbliżenia. Kodowane jako jedna z wartości
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Ustawia wzmocnienie odbiornika zbliżenia.
drivejest jedną z wartościAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Zwraca wzmocnienie sensora światła otoczenia. Kodowane jako jedna z wartości
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Ustawia wzmocnienie sensora światła otoczenia.
drivejest jedną z wartościAPDS9960_AGAIN_*.
Kompensacja wzmocnienia zbliżenia i maska fotodiod¶
Konfiguracja gestów¶
- setGestureEnterThresh(threshold: int) None¶
Ustawia próg zbliżenia wymagany do wejścia w tryb gestów.
- setGestureExitThresh(threshold: int) None¶
Ustawia próg zbliżenia wymagany do wyjścia z trybu gestów.
- getGestureGain() int¶
Zwraca wzmocnienie fotodiody używane w trybie gestów. Kodowane jako jedna z wartości
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Zwraca prąd sterowania diodą LED używany w trybie gestów. Kodowany jako jedna z wartości
APDS9960_LED_DRIVE_*.
- getGestureWaitTime() int¶
Zwraca czas oczekiwania o niskim poborze mocy między wykryciami gestów. Kodowany jako jedna z wartości
APDS9960_GWTIME_*(0 = 0 ms .. 7 = 39,2 ms).
Progi przerwania światła otoczenia¶
- getLightIntLowThreshold() int¶
Zwraca 16-bitowy dolny próg używany dla przerwania światła otoczenia.
- setLightIntLowThreshold(threshold: int) None¶
Ustawia 16-bitowy dolny próg używany dla przerwania światła otoczenia.
Włączanie i czyszczenie przerwań¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Podklasa MicroPython klasy
APDS9960. Identyczne publiczne API, ale bazowy dostęp do rejestrów wykorzystuje wywołaniareadfrom_memiwriteto_memw stylumachine.I2Czamiast metod w stylu SMBus. To jest klasa, której należy używać na platformach OpenMV / MicroPython.
Wyjątki¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Podklasa
ValueError. Zgłaszana przez konstruktorAPDS9960, gdy wartość odczytana z rejestru ID układu nie znajduje się na liścievalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Podklasa
ValueError. Zgłaszana przezAPDS9960.setMode(), gdy argumentmodeznajduje się poza zakresemAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Stałe¶
Adres I2C i identyfikatory urządzeń¶
Strojenie gestów¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Minimalna wartość próbki (na fotodiodę) używana przez dekoder gestów podczas wyszukiwania pierwszej/ostatniej próbki FIFO w zakresie.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Próg na zakumulowanych różnicach U/D i L/R, powyżej którego dekoder przypisuje kierunek przesunięcia.
Tryby funkcji¶
Te wartości są przekazywane do APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
Wartość wartownicza (
7) nakazującaAPDS9960.setMode()włączenie lub wyłączenie każdego bitu w rejestrze ENABLE jednocześnie.
Prądy sterowania diodą LED¶
Wzmocnienie zbliżenia (PGAIN)¶
Wzmocnienie światła otoczenia (AGAIN)¶
Wzmocnienie gestów (GGAIN)¶
Wzmocnienie mocy diody LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Wzmocnienie mocy diody LED 300% (
3). Stosowane automatycznie przezAPDS9960.enableGestureSensor().
Czasy oczekiwania gestów¶
Kierunki gestów¶
Te wartości są zwracane przez APDS9960.readGesture().
Stany gestów¶
Wewnętrzne wartości stanu raportowane przez maszynę stanów gestów.