apds9960 — controlador de sensor de proximidad, gestos y color¶
Este módulo proporciona un controlador para el sensor digital de proximidad, luz ambiental, color RGB y gestos APDS9960 de Broadcom/Avago a través de I2C. El controlador expone controles de habilitación/deshabilitación por característica, lecturas de canal sin procesar (clear, R, G, B, proximidad) y una máquina de estados de decodificación de gestos por software que clasifica deslizamientos hacia arriba/abajo/izquierda/derecha y gestos de acercamiento/alejamiento a partir de la FIFO de 4 fotodiodos del chip.
Ejemplo de 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)
Clases¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Construye una instancia del controlador APDS9960.
buses un objeto de bus I2C configurado que se utiliza para comunicarse con el sensor. La clase base emite llamadasread_byte_data,write_byte_datayread_i2c_block_dataal estilo SMBus; para elmachine.I2Cde MicroPython usauAPDS9960en su lugar.addresses la dirección I2C de 7 bits del dispositivo. El valor predeterminado esAPDS9960_I2C_ADDR(0x39).valid_ides una lista de valores aceptables devueltos por el registro de ID del chip. El valor predeterminado esAPDS9960_DEV_ID.
El constructor lee el ID del dispositivo y genera
ADPS9960InvalidDevIdsi no está envalid_id. A continuación, deshabilita todas las características, programa los valores predeterminados de ATIME/WTIME/PPULSE y aplica la configuración predeterminada de excitación del LED, ganancia de proximidad, ganancia ALS, umbrales de proximidad, umbrales de luz ambiental, persistencia y configuración del motor de gestos (umbrales de entrada/salida, GCONF1, ganancia de gestos, excitación del LED de gestos, tiempo de espera de gestos, desplazamientos de gestos, GPULSE, GCONF3 y habilitación de interrupción de gestos).Control de modo y alimentación¶
- getMode() int¶
Devuelve el valor sin procesar del registro ENABLE, que codifica qué características están actualmente habilitadas (alimentación, ALS, proximidad, espera, interrupción ALS, interrupción de proximidad, gestos).
- setMode(mode: int, enable: bool = True) None¶
Habilita o deshabilita una característica individual en el registro ENABLE.
modedebe ser uno de los valoresAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). CuandomodeesAPDS9960_MODE_ALL, todos los bits se activan o desactivan a la vez. GeneraADPS9960InvalidModepara valores fuera de rango.
Sensor de luz ambiental / RGB¶
- enableLightSensor(interrupts: bool = True) None¶
Restaura la ganancia ALS predeterminada, configura el bit de habilitación de interrupción ALS, enciende el dispositivo y habilita el motor de luz ambiental/color.
- disableLightSensor() None¶
Deshabilita la interrupción ALS y detiene el motor de luz ambiental/color.
Sensor de proximidad¶
- enableProximitySensor(interrupts: bool = True) None¶
Restaura la ganancia de proximidad y la excitación del LED predeterminadas, configura el bit de habilitación de interrupción de proximidad, enciende el dispositivo y habilita el motor de proximidad.
Motor de gestos¶
- enableGestureSensor(interrupts: bool = True) None¶
Reinicia el estado de gestos, establece WTIME y el recuento de pulsos de gestos, aumenta el LED al 300%, configura el bit de habilitación de interrupción de gestos, entra en la máquina de estados de gestos, enciende el dispositivo y habilita los modos de espera, proximidad y gestos.
- disableGestureSensor() None¶
Reinicia el estado de gestos, deshabilita la interrupción de gestos y la máquina de estados, y detiene el motor de gestos.
- isGestureAvailable() bool¶
Devuelve
Truesi el bit GVALID del registro de estado de gestos está establecido, lo que indica que los datos de la FIFO de gestos están listos para leerse.
- readGesture() int¶
Vacía la FIFO de gestos, ejecuta el decodificador de gestos integrado y devuelve una de las constantes de dirección
APDS9960_DIR_*. DevuelveAPDS9960_DIR_NONEsi el motor no está en ejecución, no hay datos válidos disponibles o los datos no se resolvieron en un gesto reconocido.
- resetGestureParameters() None¶
Borra el búfer interno de la FIFO de gestos, los deltas, los recuentos, los contadores de acercamiento/alejamiento, el estado y el último movimiento decodificado.
Umbrales de proximidad¶
- getProximityIntLowThreshold() int¶
Alias de
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias de
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias de
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias de
setProxIntHighThresh().
Excitación del LED, ganancia y refuerzo¶
- getLEDDrive() int¶
Devuelve la intensidad de excitación del LED utilizada para proximidad y ALS. Codificada como uno de los valores
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
Establece la intensidad de excitación del LED utilizada para proximidad y ALS.
drivees uno de los valoresAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Devuelve la ganancia del receptor de proximidad. Codificada como uno de los valores
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Establece la ganancia del receptor de proximidad.
drivees uno de los valoresAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Devuelve la ganancia del sensor de luz ambiental. Codificada como uno de los valores
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Establece la ganancia del sensor de luz ambiental.
drivees uno de los valoresAPDS9960_AGAIN_*.
Compensación de ganancia de proximidad y máscara de fotodiodos¶
- getProxGainCompEnable() bool¶
Devuelve
Truesi la compensación de ganancia de proximidad está habilitada.
- setProxGainCompEnable(enable: bool) None¶
Habilita o deshabilita la compensación de ganancia de proximidad.
Configuración de gestos¶
- getGestureEnterThresh() int¶
Devuelve el umbral de proximidad necesario para entrar en el modo de gestos.
- setGestureEnterThresh(threshold: int) None¶
Establece el umbral de proximidad necesario para entrar en el modo de gestos.
- getGestureExitThresh() int¶
Devuelve el umbral de proximidad necesario para salir del modo de gestos.
- setGestureExitThresh(threshold: int) None¶
Establece el umbral de proximidad necesario para salir del modo de gestos.
- getGestureGain() int¶
Devuelve la ganancia de los fotodiodos utilizada durante el modo de gestos. Codificada como uno de los valores
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setGestureGain(gain: int) None¶
Establece la ganancia de los fotodiodos utilizada durante el modo de gestos.
- getGestureLEDDrive() int¶
Devuelve la corriente de excitación del LED utilizada durante el modo de gestos. Codificada como uno de los valores
APDS9960_LED_DRIVE_*.
- setGestureLEDDrive(drive: int) None¶
Establece la corriente de excitación del LED utilizada durante el modo de gestos.
- getGestureWaitTime() int¶
Devuelve el tiempo de espera de bajo consumo entre detecciones de gestos. Codificado como uno de los valores
APDS9960_GWTIME_*(0 = 0 ms .. 7 = 39.2 ms).
- setGestureWaitTime(time: int) None¶
Establece el tiempo de espera de bajo consumo entre detecciones de gestos.
Umbrales de interrupción de luz ambiental¶
- getLightIntLowThreshold() int¶
Devuelve el umbral bajo de 16 bits utilizado para la interrupción de luz ambiental.
- setLightIntLowThreshold(threshold: int) None¶
Establece el umbral bajo de 16 bits utilizado para la interrupción de luz ambiental.
Habilitaciones y borrados de interrupciones¶
- getAmbientLightIntEnable() bool¶
Devuelve
Truesi las interrupciones de luz ambiental están habilitadas.
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Subclase de
APDS9960para MicroPython. API pública idéntica, pero el acceso a registros subyacente utiliza llamadasreadfrom_memywriteto_memal estilo demachine.I2Cen lugar de métodos al estilo SMBus. Esta es la clase a utilizar en plataformas OpenMV / MicroPython.
Excepciones¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Subclase de
ValueError. La genera el constructor deAPDS9960cuando el valor leído del registro de ID del chip no está presente en la listavalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Subclase de
ValueError. La generaAPDS9960.setMode()cuando el argumentomodeestá fuera del rangoAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Constantes¶
Dirección I2C e IDs de dispositivo¶
Ajuste de gestos¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Magnitud mínima de muestra (por fotodiodo) utilizada por el decodificador de gestos al buscar las primeras/últimas muestras de la FIFO dentro de rango.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Umbral sobre los deltas acumulados U/D y L/R por encima del cual el decodificador determina una dirección de deslizamiento.
Modos de característica¶
Estos valores se pasan a APDS9960.setMode().
- apds9960.APDS9960_MODE_AMBIENT_LIGHT: int¶
Bit de habilitación del motor de luz ambiental/color (
1).
- apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int¶
Bit de habilitación de interrupción de luz ambiental (
4).
- apds9960.APDS9960_MODE_ALL: int¶
Valor centinela (
7) que indica aAPDS9960.setMode()que habilite o deshabilite todos los bits del registro ENABLE a la vez.
Corrientes de excitación del LED¶
Ganancia de proximidad (PGAIN)¶
Ganancia de luz ambiental (AGAIN)¶
Ganancia de gestos (GGAIN)¶
Refuerzo del LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Refuerzo del LED del 300% (
3). Aplicado automáticamente porAPDS9960.enableGestureSensor().
Tiempos de espera de gestos¶
Direcciones de gestos¶
Estos valores son devueltos por APDS9960.readGesture().
Estados de gestos¶
Valores de estado internos reportados a través de la máquina de estados de gestos.