apds9960 — Treiber für Näherungs-, Gesten- und Farbsensor¶
Dieses Modul stellt einen Treiber für den digitalen Näherungs-, Umgebungslicht-, RGB-Farb- und Gestensensor APDS9960 von Broadcom/Avago über I2C bereit. Der Treiber stellt Aktivierungs-/Deaktivierungssteuerungen pro Funktion, Rohkanal-Lesevorgänge (Clear, R, G, B, Näherung) und eine softwarebasierte Gestendekodierungs-Zustandsmaschine bereit, die Wischbewegungen nach oben/unten/links/rechts sowie Nah-/Fern-Gesten aus dem chipinternen FIFO mit vier Fotodioden klassifiziert.
Beispielverwendung:
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)
Klassen¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Erstellt eine Instanz des APDS9960-Treibers.
busist ein konfiguriertes I2C-Bus-Objekt, das zur Kommunikation mit dem Sensor verwendet wird. Die Basisklasse setzt Aufrufe im SMBus-Stil (read_byte_data,write_byte_dataundread_i2c_block_data) ab; für MicroPythonsmachine.I2Cverwenden Sie stattdessenuAPDS9960.addressist die 7-Bit-I2C-Adresse des Geräts. Standardwert istAPDS9960_I2C_ADDR(0x39).valid_idist eine Liste akzeptabler Werte, die vom ID-Register des Chips zurückgegeben werden. Standardwert istAPDS9960_DEV_ID.
Der Konstruktor liest die Geräte-ID und löst
ADPS9960InvalidDevIdaus, wenn sie nicht invalid_identhalten ist. Anschließend deaktiviert er jede Funktion, programmiert die Standardwerte für ATIME/WTIME/PPULSE und wendet die Standardkonfiguration für LED-Treiberstärke, Näherungsverstärkung, ALS-Verstärkung, Näherungsschwellenwerte, Umgebungslicht-Schwellenwerte, Persistenz und die Gesten-Engine an (Eintritts-/Austrittsschwellenwerte, GCONF1, Gestenverstärkung, Gesten-LED-Treiberstärke, Gesten-Wartezeit, Gesten-Offsets, GPULSE, GCONF3 und Aktivierung des Gesten-Interrupts).Modus- und Stromversorgungssteuerung¶
- getMode() int¶
Gibt den Rohwert des ENABLE-Registers zurück, der kodiert, welche Funktionen derzeit aktiviert sind (Stromversorgung, ALS, Näherung, Warten, ALS-Interrupt, Näherungs-Interrupt, Gesten).
- setMode(mode: int, enable: bool = True) None¶
Aktiviert oder deaktiviert eine einzelne Funktion im ENABLE-Register.
modemuss einer derAPDS9960_MODE_*-Werte sein (APDS9960_MODE_POWER..\APDS9960_MODE_ALL). WennmodegleichAPDS9960_MODE_ALList, werden alle Bits auf einmal ein- oder ausgeschaltet. LöstADPS9960InvalidModefür Werte außerhalb des gültigen Bereichs aus.
Umgebungslicht-/RGB-Sensor¶
- enableLightSensor(interrupts: bool = True) None¶
Stellt die Standard-ALS-Verstärkung wieder her, konfiguriert das Aktivierungsbit für den ALS-Interrupt, schaltet das Gerät ein und aktiviert die Umgebungslicht-/Farb-Engine.
- disableLightSensor() None¶
Deaktiviert den ALS-Interrupt und stoppt die Umgebungslicht-/Farb-Engine.
Näherungssensor¶
Gesten-Engine¶
- enableGestureSensor(interrupts: bool = True) None¶
Setzt den Gestenzustand zurück, stellt WTIME und die Gesten-Pulsanzahl ein, erhöht die LED auf 300 %, konfiguriert das Aktivierungsbit für den Gesten-Interrupt, tritt in die Gesten-Zustandsmaschine ein, schaltet das Gerät ein und aktiviert die Modi Warten, Näherung und Gesten.
- disableGestureSensor() None¶
Setzt den Gestenzustand zurück, deaktiviert den Gesten-Interrupt und die Zustandsmaschine und stoppt die Gesten-Engine.
- isGestureAvailable() bool¶
Gibt
Truezurück, wenn das GVALID-Bit des Gesten-Statusregisters gesetzt ist, was anzeigt, dass Gesten-FIFO-Daten zum Lesen bereit sind.
- readGesture() int¶
Leert den Gesten-FIFO, führt den integrierten Gestendekoder aus und gibt eine der
APDS9960_DIR_*-Richtungskonstanten zurück. GibtAPDS9960_DIR_NONEzurück, wenn die Engine nicht läuft, keine gültigen Daten verfügbar sind oder die Daten nicht zu einer erkannten Geste aufgelöst werden konnten.
- resetGestureParameters() None¶
Löscht den internen Gesten-FIFO-Puffer, die Deltas, Zähler, Nah-/Fern-Zähler, den Zustand und die zuletzt dekodierte Bewegung.
Näherungsschwellenwerte¶
- getProxIntLowThresh() int¶
Gibt den unteren Näherungs-Interrupt-Schwellenwert zurück (PILT-Register).
- getProxIntHighThresh() int¶
Gibt den oberen Näherungs-Interrupt-Schwellenwert zurück (PIHT-Register).
- getProximityIntLowThreshold() int¶
Alias für
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias für
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias für
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias für
setProxIntHighThresh().
LED-Treiberstärke, Verstärkung und Boost¶
- getLEDDrive() int¶
Gibt die für Näherung und ALS verwendete LED-Treiberstärke zurück. Kodiert als einer der
APDS9960_LED_DRIVE_*-Werte (0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12,5 mA).
- setLEDDrive(drive: int) None¶
Setzt die für Näherung und ALS verwendete LED-Treiberstärke.
driveist einer derAPDS9960_LED_DRIVE_*-Werte.
- getProximityGain() int¶
Gibt die Verstärkung des Näherungsempfängers zurück. Kodiert als einer der
APDS9960_PGAIN_*-Werte (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Setzt die Verstärkung des Näherungsempfängers.
driveist einer derAPDS9960_PGAIN_*-Werte.
- getAmbientLightGain() int¶
Gibt die Verstärkung des Umgebungslichtsensors zurück. Kodiert als einer der
APDS9960_AGAIN_*-Werte (0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Setzt die Verstärkung des Umgebungslichtsensors.
driveist einer derAPDS9960_AGAIN_*-Werte.
Näherungsverstärkungskompensation und Fotodiodenmaske¶
- getProxGainCompEnable() bool¶
Gibt
Truezurück, wenn die Näherungsverstärkungskompensation aktiviert ist.
- setProxGainCompEnable(enable: bool) None¶
Aktiviert oder deaktiviert die Näherungsverstärkungskompensation.
Gestenkonfiguration¶
- getGestureEnterThresh() int¶
Gibt den Näherungsschwellenwert zurück, der zum Eintritt in den Gestenmodus erforderlich ist.
- setGestureEnterThresh(threshold: int) None¶
Setzt den Näherungsschwellenwert, der zum Eintritt in den Gestenmodus erforderlich ist.
- getGestureExitThresh() int¶
Gibt den Näherungsschwellenwert zurück, der zum Verlassen des Gestenmodus erforderlich ist.
- setGestureExitThresh(threshold: int) None¶
Setzt den Näherungsschwellenwert, der zum Verlassen des Gestenmodus erforderlich ist.
- getGestureGain() int¶
Gibt die im Gestenmodus verwendete Fotodiodenverstärkung zurück. Kodiert als einer der
APDS9960_GGAIN_*-Werte (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Gibt den im Gestenmodus verwendeten LED-Treiberstrom zurück. Kodiert als einer der
APDS9960_LED_DRIVE_*-Werte.
Umgebungslicht-Interrupt-Schwellenwerte¶
- getLightIntLowThreshold() int¶
Gibt den unteren 16-Bit-Schwellenwert zurück, der für den Umgebungslicht-Interrupt verwendet wird.
- setLightIntLowThreshold(threshold: int) None¶
Setzt den unteren 16-Bit-Schwellenwert, der für den Umgebungslicht-Interrupt verwendet wird.
Interrupt-Aktivierungen und -Löschungen¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
MicroPython-Unterklasse von
APDS9960. Identische öffentliche API, aber der zugrunde liegende Registerzugriff verwendet Aufrufe immachine.I2C-Stil (readfrom_memundwriteto_mem) anstelle von Methoden im SMBus-Stil. Dies ist die Klasse, die auf OpenMV-/MicroPython-Zielen zu verwenden ist.
Ausnahmen¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Unterklasse von
ValueError. Wird vomAPDS9960-Konstruktor ausgelöst, wenn der aus dem ID-Register des Chips gelesene Wert nicht in der Listevalid_identhalten ist.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Unterklasse von
ValueError. Wird vonAPDS9960.setMode()ausgelöst, wenn das Argumentmodeaußerhalb des BereichsAPDS9960_MODE_POWER..\APDS9960_MODE_ALLliegt.
Konstanten¶
I2C-Adresse und Geräte-IDs¶
Gestenabstimmung¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Minimale Sample-Magnitude (pro Fotodiode), die der Gestendekoder bei der Suche nach den ersten/letzten FIFO-Samples im gültigen Bereich verwendet.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Schwellenwert für die akkumulierten U/D- und L/R-Deltas, oberhalb dessen sich der Dekoder auf eine Wischrichtung festlegt.
Funktionsmodi¶
Diese Werte werden an APDS9960.setMode() übergeben.
- apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int¶
Aktivierungsbit für den Umgebungslicht-Interrupt (
4).
- apds9960.APDS9960_MODE_ALL: int¶
Sentinel-Wert (
7), derAPDS9960.setMode()anweist, jedes Bit im ENABLE-Register auf einmal zu aktivieren oder zu deaktivieren.
LED-Treiberströme¶
Näherungsverstärkung (PGAIN)¶
Umgebungslichtverstärkung (AGAIN)¶
Gestenverstärkung (GGAIN)¶
LED-Boost¶
- apds9960.APDS9960_LED_BOOST_300: int¶
300 % LED-Boost (
3). Automatisch vonAPDS9960.enableGestureSensor()angewendet.
Gesten-Wartezeiten¶
Gestenrichtungen¶
Diese Werte werden von APDS9960.readGesture() zurückgegeben.
Gestenzustände¶
Interne Zustandswerte, die über die Gesten-Zustandsmaschine gemeldet werden.