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#
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.