apds9960 — pilote de capteur de proximité, de gestes et de couleur¶
Ce module fournit un pilote pour le capteur numérique de proximité, de lumière ambiante, de couleur RGB et de gestes Broadcom/Avago APDS9960 via I2C. Le pilote expose des commandes d’activation/désactivation par fonctionnalité, des lectures de canaux brutes (clear, R, G, B, proximité) et une machine à états logicielle de décodage de gestes qui classe les balayages vers le haut/bas/gauche/droite et les gestes de rapprochement/éloignement à partir de la FIFO de 4 photodiodes intégrée à la puce.
Exemple d’utilisation
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)
Classes¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Construit une instance du pilote APDS9960.
busest un objet de bus I2C configuré, utilisé pour communiquer avec le capteur. La classe de base émet des appelsread_byte_data,write_byte_dataetread_i2c_block_datade type SMBus ; pour lemachine.I2Cde MicroPython, utilisez plutôtuAPDS9960.addressest l’adresse I2C 7 bits du périphérique. Vaut par défautAPDS9960_I2C_ADDR(0x39).valid_idest une liste de valeurs acceptables renvoyées par le registre d’identifiant de la puce. Vaut par défautAPDS9960_DEV_ID.
Le constructeur lit l’identifiant du périphérique et lève
ADPS9960InvalidDevIds’il ne figure pas dansvalid_id. Il désactive ensuite toutes les fonctionnalités, programme les valeurs ATIME/WTIME/PPULSE par défaut et applique la configuration par défaut du courant de la LED, du gain de proximité, du gain ALS, des seuils de proximité, des seuils de lumière ambiante, de la persistance et du moteur de gestes (seuils d’entrée/sortie, GCONF1, gain de gestes, courant LED des gestes, temps d’attente des gestes, décalages des gestes, GPULSE, GCONF3 et activation de l’interruption de gestes).Contrôle du mode et de l’alimentation¶
- getMode() int¶
Renvoie la valeur brute du registre ENABLE, codant quelles fonctionnalités sont actuellement activées (alimentation, ALS, proximité, attente, interruption ALS, interruption de proximité, gestes).
- setMode(mode: int, enable: bool = True) None¶
Active ou désactive une fonctionnalité individuelle dans le registre ENABLE.
modedoit être l’une des valeursAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). LorsquemodevautAPDS9960_MODE_ALL, tous les bits sont activés ou désactivés en une seule fois. LèveADPS9960InvalidModepour les valeurs hors plage.
Capteur de lumière ambiante / RGB¶
- enableLightSensor(interrupts: bool = True) None¶
Restaure le gain ALS par défaut, configure le bit d’activation de l’interruption ALS, met le périphérique sous tension et active le moteur de lumière ambiante/couleur.
- disableLightSensor() None¶
Désactive l’interruption ALS et arrête le moteur de lumière ambiante/couleur.
Capteur de proximité¶
- enableProximitySensor(interrupts: bool = True) None¶
Restaure le gain de proximité et le courant de la LED par défaut, configure le bit d’activation de l’interruption de proximité, met le périphérique sous tension et active le moteur de proximité.
Moteur de gestes¶
- enableGestureSensor(interrupts: bool = True) None¶
Réinitialise l’état des gestes, règle WTIME et le nombre d’impulsions de gestes, augmente la LED à 300 %, configure le bit d’activation de l’interruption de gestes, entre dans la machine à états des gestes, met le périphérique sous tension et active les modes attente, proximité et gestes.
- disableGestureSensor() None¶
Réinitialise l’état des gestes, désactive l’interruption et la machine à états des gestes, et arrête le moteur de gestes.
- isGestureAvailable() bool¶
Renvoie
Truesi le bit GVALID du registre d’état des gestes est activé, indiquant que les données de la FIFO de gestes sont prêtes à être lues.
- readGesture() int¶
Vide la FIFO de gestes, exécute le décodeur de gestes embarqué et renvoie l’une des constantes de direction
APDS9960_DIR_*. RenvoieAPDS9960_DIR_NONEsi le moteur n’est pas en cours d’exécution, si aucune donnée valide n’est disponible ou si les données n’ont pas pu être résolues en un geste reconnu.
- resetGestureParameters() None¶
Efface le tampon FIFO de gestes interne, les deltas, les comptes, les compteurs de rapprochement/éloignement, l’état et le dernier mouvement décodé.
Seuils de proximité¶
- getProximityIntLowThreshold() int¶
Alias de
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias de
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias de
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias de
setProxIntHighThresh().
Courant de la LED, gain et amplification¶
- getLEDDrive() int¶
Renvoie l’intensité du courant de la LED utilisée pour la proximité et l’ALS. Codée comme l’une des valeurs
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12,5 mA).
- setLEDDrive(drive: int) None¶
Définit l’intensité du courant de la LED utilisée pour la proximité et l’ALS.
driveest l’une des valeursAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Renvoie le gain du récepteur de proximité. Codé comme l’une des valeurs
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Définit le gain du récepteur de proximité.
driveest l’une des valeursAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Renvoie le gain du capteur de lumière ambiante. Codé comme l’une des valeurs
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Définit le gain du capteur de lumière ambiante.
driveest l’une des valeursAPDS9960_AGAIN_*.
Compensation du gain de proximité et masque des photodiodes¶
Configuration des gestes¶
- setGestureEnterThresh(threshold: int) None¶
Définit le seuil de proximité requis pour entrer en mode gestes.
- setGestureExitThresh(threshold: int) None¶
Définit le seuil de proximité requis pour sortir du mode gestes.
- getGestureGain() int¶
Renvoie le gain des photodiodes utilisé en mode gestes. Codé comme l’une des valeurs
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Renvoie le courant de la LED utilisé en mode gestes. Codé comme l’une des valeurs
APDS9960_LED_DRIVE_*.
- getGestureWaitTime() int¶
Renvoie le temps d’attente basse consommation entre les détections de gestes. Codé comme l’une des valeurs
APDS9960_GWTIME_*(0 = 0 ms .. 7 = 39,2 ms).
- setGestureWaitTime(time: int) None¶
Définit le temps d’attente basse consommation entre les détections de gestes.
Seuils d’interruption de lumière ambiante¶
- getLightIntLowThreshold() int¶
Renvoie le seuil bas 16 bits utilisé pour l’interruption de lumière ambiante.
- setLightIntLowThreshold(threshold: int) None¶
Définit le seuil bas 16 bits utilisé pour l’interruption de lumière ambiante.
Activations et effacements d’interruptions¶
- getAmbientLightIntEnable() bool¶
Renvoie
Truesi les interruptions de lumière ambiante sont activées.
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Sous-classe MicroPython de
APDS9960. API publique identique, mais l’accès aux registres sous-jacents utilise des appelsreadfrom_memetwriteto_memde typemachine.I2Cplutôt que des méthodes de type SMBus. C’est la classe à utiliser sur les cibles OpenMV / MicroPython.
Exceptions¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Sous-classe de
ValueError. Levée par le constructeur deAPDS9960lorsque la valeur lue dans le registre d’identifiant de la puce n’est pas présente dans la listevalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Sous-classe de
ValueError. Levée parAPDS9960.setMode()lorsque l’argumentmodeest en dehors de la plageAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Constantes¶
Adresse I2C et identifiants de périphérique¶
Réglage fin des gestes¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Magnitude minimale d’échantillon (par photodiode) utilisée par le décodeur de gestes lors de la recherche des premiers/derniers échantillons FIFO dans la plage.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Seuil sur les deltas U/D et L/R accumulés au-delà duquel le décodeur retient une direction de balayage.
Modes de fonctionnalité¶
Ces valeurs sont passées à APDS9960.setMode().
- apds9960.APDS9960_MODE_AMBIENT_LIGHT: int¶
Bit d’activation du moteur de lumière ambiante/couleur (
1).
- apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int¶
Bit d’activation de l’interruption de lumière ambiante (
4).
- apds9960.APDS9960_MODE_ALL: int¶
Valeur sentinelle (
7) indiquant àAPDS9960.setMode()d’activer ou de désactiver tous les bits du registre ENABLE en une seule fois.
Courants de la LED¶
Gain de proximité (PGAIN)¶
Gain de lumière ambiante (AGAIN)¶
Gain des gestes (GGAIN)¶
Amplification de la LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Amplification LED de 300 % (
3). Appliquée automatiquement parAPDS9960.enableGestureSensor().
Temps d’attente des gestes¶
Directions des gestes¶
Ces valeurs sont renvoyées par APDS9960.readGesture().
États des gestes¶
Valeurs d’état internes signalées par la machine à états des gestes.