apds9960 — Driver de sensor de proximidade, gestos e cor#
Este módulo fornece um driver para o sensor digital de proximidade, luz ambiente, cor RGB e gestos APDS9960 da Broadcom/Avago via I2C. O driver expõe controles de habilitar/desabilitar por característica, leituras brutas de canais (clear, R, G, B, proximidade) e uma máquina de estados de decodificação de gestos em software que classifica deslizes para cima/baixo/esquerda/direita e gestos de aproximar/afastar a partir do FIFO de 4 fotodiodos do chip.
Exemplo 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)
Classes#
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])#
Constrói uma instância do driver APDS9960.
busé um objeto de barramento I2C configurado usado para se comunicar com o sensor. A classe base emite chamadasread_byte_data,write_byte_dataeread_i2c_block_datano estilo SMBus; para omachine.I2Cdo MicroPython, useuAPDS9960em vez disso.addressé o endereço I2C de 7 bits do dispositivo. O padrão éAPDS9960_I2C_ADDR(0x39).valid_idé uma lista de valores aceitáveis retornados pelo registrador de ID do chip. O padrão éAPDS9960_DEV_ID.
O construtor lê o ID do dispositivo e levanta
ADPS9960InvalidDevIdse ele não estiver emvalid_id. Em seguida, desabilita todas as características, programa os valores padrão de ATIME/WTIME/PPULSE e aplica os padrões de drive do LED, ganho de proximidade, ganho de ALS, limiares de proximidade, limiares de luz ambiente, persistência e configuração do motor de gestos (limiares de entrada/saída, GCONF1, ganho de gestos, drive do LED de gestos, tempo de espera de gestos, offsets de gestos, GPULSE, GCONF3 e habilitação da interrupção de gestos).Controle de modo e energia#
- getMode() int#
Retorna o valor bruto do registrador ENABLE, codificando quais características estão atualmente habilitadas (energia, ALS, proximidade, espera, interrupção de ALS, interrupção de proximidade, gestos).
- setMode(mode: int, enable: bool = True) None#
Habilita ou desabilita uma característica individual no registrador ENABLE.
modedeve ser um dos valoresAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). QuandomodeéAPDS9960_MODE_ALL, todos os bits são ligados ou desligados de uma vez. LevantaADPS9960InvalidModepara valores fora da faixa.
Sensor de luz ambiente / RGB#
- enableLightSensor(interrupts: bool = True) None#
Restaura o ganho de ALS padrão, configura o bit de habilitação da interrupção de ALS, liga o dispositivo e habilita o motor de luz ambiente/cor.
Sensor de proximidade#
- enableProximitySensor(interrupts: bool = True) None#
Restaura o ganho de proximidade e o drive do LED padrão, configura o bit de habilitação da interrupção de proximidade, liga o dispositivo e habilita o motor de proximidade.
Motor de gestos#
- enableGestureSensor(interrupts: bool = True) None#
Reinicia o estado de gestos, define WTIME e a contagem de pulsos de gestos, aumenta o LED para 300%, configura o bit de habilitação da interrupção de gestos, entra na máquina de estados de gestos, liga o dispositivo e habilita os modos de espera, proximidade e gestos.
- disableGestureSensor() None#
Reinicia o estado de gestos, desabilita a interrupção de gestos e a máquina de estados, e para o motor de gestos.
- isGestureAvailable() bool#
Retorna
Truese o bit GVALID do registrador de status de gestos estiver definido, indicando que os dados do FIFO de gestos estão prontos para serem lidos.
- readGesture() int#
Esvazia o FIFO de gestos, executa o decodificador de gestos embarcado e retorna uma das constantes de direção
APDS9960_DIR_*. RetornaAPDS9960_DIR_NONEse o motor não estiver em execução, se nenhum dado válido estiver disponível ou se os dados não resultarem em um gesto reconhecido.
- resetGestureParameters() None#
Limpa o buffer interno do FIFO de gestos, os deltas, as contagens, os contadores de aproximar/afastar, o estado e o último movimento decodificado.
Limiares de proximidade#
- getProximityIntLowThreshold() int#
Alias para
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None#
Alias para
setProxIntLowThresh().
- getProximityIntHighThreshold() int#
Alias para
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None#
Alias para
setProxIntHighThresh().
Drive do LED, ganho e boost#
- getLEDDrive() int#
Retorna a intensidade do drive do LED usada para proximidade e ALS. Codificada como um dos valores
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12,5 mA).
- setLEDDrive(drive: int) None#
Define a intensidade do drive do LED usada para proximidade e ALS.
driveé um dos valoresAPDS9960_LED_DRIVE_*.
- getProximityGain() int#
Retorna o ganho do receptor de proximidade. Codificado como um dos valores
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None#
Define o ganho do receptor de proximidade.
driveé um dos valoresAPDS9960_PGAIN_*.
- getAmbientLightGain() int#
Retorna o ganho do sensor de luz ambiente. Codificado como um dos valores
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None#
Define o ganho do sensor de luz ambiente.
driveé um dos valoresAPDS9960_AGAIN_*.
Compensação de ganho de proximidade e máscara de fotodiodos#
- getProxGainCompEnable() bool#
Retorna
Truese a compensação de ganho de proximidade estiver habilitada.
- setProxGainCompEnable(enable: bool) None#
Habilita ou desabilita a compensação de ganho de proximidade.
Configuração de gestos#
- getGestureEnterThresh() int#
Retorna o limiar de proximidade necessário para entrar no modo de gestos.
- setGestureEnterThresh(threshold: int) None#
Define o limiar de proximidade necessário para entrar no modo de gestos.
- setGestureExitThresh(threshold: int) None#
Define o limiar de proximidade necessário para sair do modo de gestos.
- getGestureGain() int#
Retorna o ganho do fotodiodo usado durante o modo de gestos. Codificado como um dos valores
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int#
Retorna a corrente do drive do LED usada durante o modo de gestos. Codificada como um dos valores
APDS9960_LED_DRIVE_*.
- setGestureLEDDrive(drive: int) None#
Define a corrente do drive do LED usada durante o modo de gestos.
- getGestureWaitTime() int#
Retorna o tempo de espera de baixo consumo entre detecções de gestos. Codificado como um dos valores
APDS9960_GWTIME_*(0 = 0 ms .. 7 = 39,2 ms).
- setGestureWaitTime(time: int) None#
Define o tempo de espera de baixo consumo entre detecções de gestos.
Limiares de interrupção de luz ambiente#
- getLightIntLowThreshold() int#
Retorna o limiar baixo de 16 bits usado para a interrupção de luz ambiente.
- setLightIntLowThreshold(threshold: int) None#
Define o limiar baixo de 16 bits usado para a interrupção de luz ambiente.
Habilitação e limpeza de interrupções#
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])#
Subclasse do MicroPython de
APDS9960. API pública idêntica, mas o acesso aos registradores subjacentes usa chamadasreadfrom_memewriteto_memno estilomachine.I2Cem vez de métodos no estilo SMBus. Esta é a classe a ser usada em targets OpenMV / MicroPython.
Exceções#
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)#
Subclasse de
ValueError. Levantada pelo construtor deAPDS9960quando o valor lido do registrador de ID do chip não está presente na listavalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)#
Subclasse de
ValueError. Levantada porAPDS9960.setMode()quando o argumentomodeestá fora da faixaAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Constantes#
Endereço I2C e IDs de dispositivo#
Ajuste de gestos#
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int#
Magnitude mínima de amostra (por fotodiodo) usada pelo decodificador de gestos ao procurar as primeiras/últimas amostras do FIFO dentro da faixa.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int#
Limiar sobre os deltas acumulados U/D e L/R acima do qual o decodificador define uma direção de deslize.
Modos de característica#
Estes valores são passados para APDS9960.setMode().
- apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int#
Bit de habilitação da interrupção de luz ambiente (
4).
- apds9960.APDS9960_MODE_ALL: int#
Valor sentinela (
7) que instruiAPDS9960.setMode()a habilitar ou desabilitar todos os bits do registrador ENABLE de uma vez.
Correntes do drive do LED#
Ganho de proximidade (PGAIN)#
Ganho de luz ambiente (AGAIN)#
Ganho de gestos (GGAIN)#
Boost do LED#
- apds9960.APDS9960_LED_BOOST_300: int#
Boost do LED de 300% (
3). Aplicado automaticamente porAPDS9960.enableGestureSensor().
Tempos de espera de gestos#
Direções de gestos#
Estes valores são retornados por APDS9960.readGesture().
Estados de gestos#
Valores de estado interno reportados pela máquina de estados de gestos.