apds9960 — Driver para Sensor de Proximidade, Gestos e Cor¶
Este módulo fornece um driver para o sensor digital de proximidade, luz ambiente, cor RGB e gestos Broadcom/Avago APDS9960 via I2C. O driver expõe controlos de ativação/desativação por funcionalidade, leituras de canais em bruto (clear, R, G, B, proximidade) e uma máquina de estados de deteção de gestos por software que classifica gestos de deslize cima/baixo/esquerda/direita e perto/longe a partir do FIFO de 4 fotodíodos do chip.
Exemplo de utilização:
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 comunicar com o sensor. A classe base emite chamadas SMBus-styleread_byte_data,write_byte_dataeread_i2c_block_data; para omachine.I2Cdo MicroPython useuAPDS9960em alternativa.addressé o endereço I2C de 7 bits do dispositivo. Por omissão éAPDS9960_I2C_ADDR(0x39).valid_idé uma lista de valores aceitáveis devolvidos pelo registo de ID do chip. Por omissão éAPDS9960_DEV_ID.
O construtor lê o ID do dispositivo e gera
ADPS9960InvalidDevIdse este não estiver emvalid_id. Em seguida, desativa todas as funcionalidades, programa os valores predefinidos de ATIME/WTIME/PPULSE e aplica as configurações predefinidas de corrente LED, ganho de proximidade, ganho 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 gesto, corrente LED de gesto, tempo de espera de gesto, desvios de gesto, GPULSE, GCONF3 e ativação de interrupção de gesto).Controlo de modo e de energia¶
- getMode() int¶
Devolve o valor em bruto do registo ENABLE, codificando as funcionalidades atualmente ativas (energia, ALS, proximidade, espera, interrupção ALS, interrupção de proximidade, gestos).
- setMode(mode: int, enable: bool = True) None¶
Ativa ou desativa uma funcionalidade individual no registo ENABLE.
modedeve ser um dos valoresAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). QuandomodeéAPDS9960_MODE_ALL, todos os bits são ativados ou desativados de uma vez. GeraADPS9960InvalidModepara valores fora do intervalo.
Sensor de luz ambiente / RGB¶
- enableLightSensor(interrupts: bool = True) None¶
Restaura o ganho ALS predefinido, configura o bit de ativação de interrupção ALS, liga o dispositivo e ativa o motor de luz ambiente/cor.
Sensor de proximidade¶
Motor de gestos¶
- enableGestureSensor(interrupts: bool = True) None¶
Reinicia o estado de gestos, define WTIME e a contagem de pulsos de gesto, aumenta o LED para 300%, configura o bit de ativação de interrupção de gestos, entra na máquina de estados de gestos, liga o dispositivo e ativa os modos de espera, proximidade e gestos.
- disableGestureSensor() None¶
Reinicia o estado de gestos, desativa a interrupção de gestos e a máquina de estados, e para o motor de gestos.
- isGestureAvailable() bool¶
Devolve
Truese o bit GVALID do registo de estado de gestos estiver definido, indicando que os dados FIFO de gestos estão prontos para ser lidos.
- readGesture() int¶
Esvazia o FIFO de gestos, executa o descodificador de gestos integrado e devolve uma das constantes de direção
APDS9960_DIR_*. DevolveAPDS9960_DIR_NONEse o motor não estiver em execução, não houver dados válidos disponíveis ou os dados não resolverem para um gesto reconhecido.
- resetGestureParameters() None¶
Limpa o buffer interno FIFO de gestos, deltas, contadores, contadores perto/longe, estado e último movimento descodificado.
Limiares de proximidade¶
- getProximityIntLowThreshold() int¶
Alias de
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias de
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias de
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias de
setProxIntHighThresh().
Corrente LED, ganho e amplificação¶
- getLEDDrive() int¶
Devolve a intensidade de corrente 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 de corrente LED usada para proximidade e ALS.
driveé um dos valoresAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Devolve o ganho do recetor 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 recetor de proximidade.
driveé um dos valoresAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Devolve 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 fotodíodos¶
- getProxGainCompEnable() bool¶
Devolve
Truese a compensação de ganho de proximidade estiver ativada.
Configuração de gestos¶
- getGestureEnterThresh() int¶
Devolve 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¶
Devolve o ganho de fotodíodo usado durante o modo de gestos. Codificado como um dos valores
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Devolve a corrente LED usada durante o modo de gestos. Codificada como um dos valores
APDS9960_LED_DRIVE_*.
- getGestureWaitTime() int¶
Devolve o tempo de espera de baixo consumo entre deteçõ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 deteções de gestos.
Limiares de interrupção de luz ambiente¶
- getLightIntLowThreshold() int¶
Devolve 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.
Ativação e limpeza de interrupções¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Subclasse MicroPython de
APDS9960. API pública idêntica, mas o acesso a registos subjacente usa chamadasmachine.I2C-stylereadfrom_memewriteto_memem vez de métodos SMBus-style. Esta é a classe a usar em alvos OpenMV / MicroPython.
Exceções¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Subclasse de
ValueError. Gerada pelo construtor deAPDS9960quando o valor lido do registo de ID do chip não está presente na listavalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Subclasse de
ValueError. Gerada porAPDS9960.setMode()quando o argumentomodeestá fora do intervaloAPDS9960_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 fotodíodo) usada pelo descodificador de gestos ao procurar as primeiras/últimas amostras FIFO dentro do intervalo.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Limiar nos deltas acumulados U/D e L/R acima do qual o descodificador compromete-se a uma direção de deslize.
Modos de funcionalidade¶
Estes valores são passados a APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
Valor sentinela (
7) que indica aAPDS9960.setMode()para ativar ou desativar todos os bits do registo ENABLE de uma vez.
Correntes LED de acionamento¶
Ganho de proximidade (PGAIN)¶
Ganho de luz ambiente (AGAIN)¶
Ganho de gestos (GGAIN)¶
Amplificação LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Amplificação LED de 300% (
3). Aplicada automaticamente porAPDS9960.enableGestureSensor().
Tempos de espera de gestos¶
Direções de gestos¶
Estes valores são devolvidos por APDS9960.readGesture().
Estados de gestos¶
Valores de estado interno reportados pela máquina de estados de gestos.