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¶
- getAmbientLightIntEnable() bool¶
Retorna
Truese as interrupções de luz ambiente estiverem habilitadas.
- 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.