apds9960 — driver per sensore di prossimità, gesti e colore¶
Questo modulo fornisce un driver per il sensore digitale di prossimità, luce ambientale, colore RGB e gesti APDS9960 di Broadcom/Avago tramite I2C. Il driver espone controlli di abilitazione/disabilitazione per funzione, letture grezze dei canali (clear, R, G, B, prossimità) e una macchina a stati software per la decodifica dei gesti che classifica gli scorrimenti verso l’alto/basso/sinistra/destra e i gesti di avvicinamento/allontanamento a partire dalla FIFO a 4 fotodiodi integrata nel chip.
Esempio d’uso:
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)
Classi¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Costruisce un’istanza del driver APDS9960.
busè un oggetto bus I2C configurato usato per comunicare con il sensore. La classe base emette chiamate in stile SMBusread_byte_data,write_byte_dataeread_i2c_block_data; permachine.I2Cdi MicroPython usa inveceuAPDS9960.addressè l’indirizzo I2C a 7 bit del dispositivo. Il valore predefinito èAPDS9960_I2C_ADDR(0x39).valid_idè un elenco di valori accettabili restituiti dal registro ID del chip. Il valore predefinito èAPDS9960_DEV_ID.
Il costruttore legge l’ID del dispositivo e solleva
ADPS9960InvalidDevIdse non è presente invalid_id. Quindi disabilita ogni funzione, programma i valori ATIME/WTIME/PPULSE predefiniti e applica la configurazione predefinita di LED drive, guadagno di prossimità, guadagno ALS, soglie di prossimità, soglie di luce ambientale, persistenza e del motore dei gesti (soglie di ingresso/uscita, GCONF1, guadagno dei gesti, LED drive dei gesti, tempo di attesa dei gesti, offset dei gesti, GPULSE, GCONF3 e abilitazione dell’interrupt dei gesti).Controllo di modalità e alimentazione¶
- getMode() int¶
Restituisce il valore grezzo del registro ENABLE, che codifica quali funzioni sono attualmente abilitate (alimentazione, ALS, prossimità, attesa, interrupt ALS, interrupt di prossimità, gesti).
- setMode(mode: int, enable: bool = True) None¶
Abilita o disabilita una singola funzione nel registro ENABLE.
modedeve essere uno dei valoriAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). QuandomodeèAPDS9960_MODE_ALL, tutti i bit vengono attivati o disattivati contemporaneamente. SollevaADPS9960InvalidModeper valori fuori intervallo.
Sensore di luce ambientale / RGB¶
- enableLightSensor(interrupts: bool = True) None¶
Ripristina il guadagno ALS predefinito, configura il bit di abilitazione dell’interrupt ALS, accende il dispositivo e abilita il motore di luce ambientale/colore.
- disableLightSensor() None¶
Disabilita l’interrupt ALS e arresta il motore di luce ambientale/colore.
Sensore di prossimità¶
- enableProximitySensor(interrupts: bool = True) None¶
Ripristina il guadagno di prossimità e il LED drive predefiniti, configura il bit di abilitazione dell’interrupt di prossimità, accende il dispositivo e abilita il motore di prossimità.
Motore dei gesti¶
- enableGestureSensor(interrupts: bool = True) None¶
Reimposta lo stato dei gesti, imposta WTIME e il conteggio degli impulsi dei gesti, aumenta il LED al 300%, configura il bit di abilitazione dell’interrupt dei gesti, entra nella macchina a stati dei gesti, accende il dispositivo e abilita le modalità di attesa, prossimità e gesti.
- disableGestureSensor() None¶
Reimposta lo stato dei gesti, disabilita l’interrupt e la macchina a stati dei gesti e arresta il motore dei gesti.
- isGestureAvailable() bool¶
Restituisce
Truese il bit GVALID del registro di stato dei gesti è impostato, indicando che i dati della FIFO dei gesti sono pronti per essere letti.
- readGesture() int¶
Svuota la FIFO dei gesti, esegue il decodificatore di gesti integrato e restituisce una delle costanti di direzione
APDS9960_DIR_*. RestituisceAPDS9960_DIR_NONEse il motore non è in esecuzione, se non sono disponibili dati validi o se i dati non si sono risolti in un gesto riconosciuto.
- resetGestureParameters() None¶
Azzera il buffer FIFO interno dei gesti, i delta, i conteggi, i contatori di avvicinamento/allontanamento, lo stato e l’ultimo movimento decodificato.
Soglie di prossimità¶
- getProxIntLowThresh() int¶
Restituisce la soglia bassa dell’interrupt di prossimità (registro PILT).
- getProxIntHighThresh() int¶
Restituisce la soglia alta dell’interrupt di prossimità (registro PIHT).
- getProximityIntLowThreshold() int¶
Alias di
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias di
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias di
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias di
setProxIntHighThresh().
LED drive, guadagno e boost¶
- getLEDDrive() int¶
Restituisce l’intensità del LED drive usata per prossimità e ALS. Codificata come uno dei valori
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
Imposta l’intensità del LED drive usata per prossimità e ALS.
driveè uno dei valoriAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Restituisce il guadagno del ricevitore di prossimità. Codificato come uno dei valori
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Imposta il guadagno del ricevitore di prossimità.
driveè uno dei valoriAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Restituisce il guadagno del sensore di luce ambientale. Codificato come uno dei valori
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Imposta il guadagno del sensore di luce ambientale.
driveè uno dei valoriAPDS9960_AGAIN_*.
Compensazione del guadagno di prossimità e maschera dei fotodiodi¶
- getProxGainCompEnable() bool¶
Restituisce
Truese la compensazione del guadagno di prossimità è abilitata.
- setProxGainCompEnable(enable: bool) None¶
Abilita o disabilita la compensazione del guadagno di prossimità.
Configurazione dei gesti¶
- getGestureEnterThresh() int¶
Restituisce la soglia di prossimità richiesta per entrare in modalità gesti.
- setGestureEnterThresh(threshold: int) None¶
Imposta la soglia di prossimità richiesta per entrare in modalità gesti.
- getGestureExitThresh() int¶
Restituisce la soglia di prossimità richiesta per uscire dalla modalità gesti.
- setGestureExitThresh(threshold: int) None¶
Imposta la soglia di prossimità richiesta per uscire dalla modalità gesti.
- getGestureGain() int¶
Restituisce il guadagno dei fotodiodi usato durante la modalità gesti. Codificato come uno dei valori
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Restituisce la corrente del LED drive usata durante la modalità gesti. Codificata come uno dei valori
APDS9960_LED_DRIVE_*.
- setGestureLEDDrive(drive: int) None¶
Imposta la corrente del LED drive usata durante la modalità gesti.
- getGestureWaitTime() int¶
Restituisce il tempo di attesa a basso consumo tra i rilevamenti dei gesti. Codificato come uno dei valori
APDS9960_GWTIME_*(0 = 0 ms .. 7 = 39.2 ms).
- setGestureWaitTime(time: int) None¶
Imposta il tempo di attesa a basso consumo tra i rilevamenti dei gesti.
Soglie dell’interrupt di luce ambientale¶
- getLightIntLowThreshold() int¶
Restituisce la soglia bassa a 16 bit usata per l’interrupt di luce ambientale.
- setLightIntLowThreshold(threshold: int) None¶
Imposta la soglia bassa a 16 bit usata per l’interrupt di luce ambientale.
Abilitazioni e azzeramenti degli interrupt¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Sottoclasse MicroPython di
APDS9960. API pubblica identica, ma l’accesso ai registri sottostante usa chiamate in stilemachine.I2Creadfrom_memewriteto_memanziché metodi in stile SMBus. Questa è la classe da usare su target OpenMV / MicroPython.
Eccezioni¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Sottoclasse di
ValueError. Sollevata dal costruttore diAPDS9960quando il valore letto dal registro ID del chip non è presente nell’elencovalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Sottoclasse di
ValueError. Sollevata daAPDS9960.setMode()quando l’argomentomodeè al di fuori dell’intervalloAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Costanti¶
Indirizzo I2C e ID dei dispositivi¶
Regolazione dei gesti¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Magnitudine minima del campione (per fotodiodo) usata dal decodificatore di gesti durante la ricerca dei primi/ultimi campioni FIFO entro il range.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Soglia sui delta U/D e L/R accumulati oltre la quale il decodificatore conferma una direzione di scorrimento.
Modalità delle funzioni¶
Questi valori vengono passati a APDS9960.setMode().
- apds9960.APDS9960_MODE_AMBIENT_LIGHT: int¶
Bit di abilitazione del motore di luce ambientale/colore (
1).
- apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int¶
Bit di abilitazione dell’interrupt di luce ambientale (
4).
- apds9960.APDS9960_MODE_ALL: int¶
Valore sentinella (
7) che indica aAPDS9960.setMode()di abilitare o disabilitare contemporaneamente ogni bit del registro ENABLE.
Correnti del LED drive¶
Guadagno di prossimità (PGAIN)¶
Guadagno di luce ambientale (AGAIN)¶
Guadagno dei gesti (GGAIN)¶
Boost del LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Boost del LED 300% (
3). Applicato automaticamente daAPDS9960.enableGestureSensor().
Tempi di attesa dei gesti¶
Direzioni dei gesti¶
Questi valori vengono restituiti da APDS9960.readGesture().
Stati dei gesti¶
Valori di stato interni riportati tramite la macchina a stati dei gesti.