apds9960 — driver voor nabijheids-, gebaren- en kleursensor¶
Deze module biedt een driver voor de digitale nabijheids-, omgevingslicht-, RGB-kleur- en gebarensensor APDS9960 van Broadcom/Avago via I2C. De driver biedt per kenmerk in/uitschakelbesturing, ruwe kanaalmetingen (clear, R, G, B, nabijheid) en een softwarematige toestandsmachine voor gebarendecodering die veeg-omhoog/omlaag/links/rechts en nabij/ver-gebaren classificeert op basis van de 4-fotodiode-FIFO op de chip.
Voorbeeldgebruik:
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)
Klassen¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Maak een instantie van de APDS9960-driver aan.
busis een geconfigureerd I2C-busobject dat wordt gebruikt om met de sensor te communiceren. De basisklasse doetread_byte_data-,write_byte_data- enread_i2c_block_data-aanroepen in SMBus-stijl; gebruik voor demachine.I2Cvan MicroPython in plaats daarvanuAPDS9960.addressis het 7-bits I2C-adres van het apparaat. StandaardAPDS9960_I2C_ADDR(0x39).valid_idis een lijst met aanvaardbare waarden die door het ID-register van de chip worden geretourneerd. StandaardAPDS9960_DEV_ID.
De constructor leest de apparaat-ID en genereert
ADPS9960InvalidDevIdals deze niet invalid_idstaat. Vervolgens schakelt hij elk kenmerk uit, programmeert de standaardwaarden voor ATIME/WTIME/PPULSE en past de standaardconfiguratie toe voor LED-drive, nabijheidsversterking, ALS-versterking, nabijheidsdrempelwaarden, omgevingslichtdrempelwaarden, persistentie en de gebarenengine (entry/exit-drempelwaarden, GCONF1, gebarenversterking, gebaren-LED-drive, gebaren-wachttijd, gebaren-offsets, GPULSE, GCONF3 en gebaren-interrupt-inschakeling).Modus- en voedingsbesturing¶
- getMode() int¶
Retourneer de ruwe waarde van het ENABLE-register, die codeert welke kenmerken momenteel zijn ingeschakeld (voeding, ALS, nabijheid, wachten, ALS-interrupt, nabijheids-interrupt, gebaren).
- setMode(mode: int, enable: bool = True) None¶
Schakel een afzonderlijk kenmerk in het ENABLE-register in of uit.
modemoet een van deAPDS9960_MODE_*-waarden zijn (APDS9960_MODE_POWER..\APDS9960_MODE_ALL). Wanneermodegelijk is aanAPDS9960_MODE_ALL, worden alle bits tegelijk in- of uitgeschakeld. GenereertADPS9960InvalidModevoor waarden buiten het bereik.
Omgevingslicht-/RGB-sensor¶
- enableLightSensor(interrupts: bool = True) None¶
Herstel de standaard ALS-versterking, configureer de inschakelbit voor de ALS-interrupt, schakel het apparaat in en activeer de omgevingslicht-/kleurengine.
- readAmbientLight() int¶
Lees het omgevingslichtniveau van het clear-kanaal als een 16-bits niet-ondertekende waarde.
Nabijheidssensor¶
Gebarenengine¶
- enableGestureSensor(interrupts: bool = True) None¶
Reset de gebarentoestand, stel WTIME en het aantal gebaren-pulsen in, verhoog de LED naar 300%, configureer de inschakelbit voor de gebaren-interrupt, betreed de gebarentoestandsmachine, schakel het apparaat in en activeer de modi voor wachten, nabijheid en gebaren.
- disableGestureSensor() None¶
Reset de gebarentoestand, schakel de gebaren-interrupt en toestandsmachine uit en stop de gebarenengine.
- isGestureAvailable() bool¶
Retourneer
Trueals de GVALID-bit van het gebaren-statusregister is ingesteld, wat aangeeft dat gebaren-FIFO-gegevens klaar zijn om te worden gelezen.
- readGesture() int¶
Leeg de gebaren-FIFO, voer de ingebouwde gebarendecoder uit en retourneer een van de
APDS9960_DIR_*-richtingsconstanten. RetourneertAPDS9960_DIR_NONEals de engine niet actief is, er geen geldige gegevens beschikbaar zijn, of de gegevens niet zijn herleid tot een herkend gebaar.
- resetGestureParameters() None¶
Wis de interne gebaren-FIFO-buffer, deltas, tellingen, nabij/ver-tellers, toestand en het laatst gedecodeerde bewegingsgegeven.
Nabijheidsdrempelwaarden¶
- getProximityIntLowThreshold() int¶
Alias voor
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias voor
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias voor
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias voor
setProxIntHighThresh().
LED-drive, versterking en boost¶
- getLEDDrive() int¶
Retourneer de LED-drivesterkte die wordt gebruikt voor nabijheid en ALS. Gecodeerd als een van de
APDS9960_LED_DRIVE_*-waarden (0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
Stel de LED-drivesterkte in die wordt gebruikt voor nabijheid en ALS.
driveis een van deAPDS9960_LED_DRIVE_*-waarden.
- getProximityGain() int¶
Retourneer de versterking van de nabijheidsontvanger. Gecodeerd als een van de
APDS9960_PGAIN_*-waarden (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Stel de versterking van de nabijheidsontvanger in.
driveis een van deAPDS9960_PGAIN_*-waarden.
- getAmbientLightGain() int¶
Retourneer de versterking van de omgevingslichtsensor. Gecodeerd als een van de
APDS9960_AGAIN_*-waarden (0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Stel de versterking van de omgevingslichtsensor in.
driveis een van deAPDS9960_AGAIN_*-waarden.
Nabijheidsversterkingscompensatie en fotodiodemasker¶
- getProxGainCompEnable() bool¶
Retourneer
Trueals nabijheidsversterkingscompensatie is ingeschakeld.
Gebarenconfiguratie¶
- getGestureEnterThresh() int¶
Retourneer de nabijheidsdrempelwaarde die vereist is om de gebarenmodus te betreden.
- setGestureEnterThresh(threshold: int) None¶
Stel de nabijheidsdrempelwaarde in die vereist is om de gebarenmodus te betreden.
- getGestureExitThresh() int¶
Retourneer de nabijheidsdrempelwaarde die vereist is om de gebarenmodus te verlaten.
- setGestureExitThresh(threshold: int) None¶
Stel de nabijheidsdrempelwaarde in die vereist is om de gebarenmodus te verlaten.
- getGestureGain() int¶
Retourneer de fotodiodeversterking die wordt gebruikt tijdens de gebarenmodus. Gecodeerd als een van de
APDS9960_GGAIN_*-waarden (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setGestureGain(gain: int) None¶
Stel de fotodiodeversterking in die wordt gebruikt tijdens de gebarenmodus.
- getGestureLEDDrive() int¶
Retourneer de LED-drivestroom die wordt gebruikt tijdens de gebarenmodus. Gecodeerd als een van de
APDS9960_LED_DRIVE_*-waarden.
- setGestureLEDDrive(drive: int) None¶
Stel de LED-drivestroom in die wordt gebruikt tijdens de gebarenmodus.
Drempelwaarden voor de omgevingslicht-interrupt¶
- getLightIntLowThreshold() int¶
Retourneer de 16-bits lage drempelwaarde die wordt gebruikt voor de omgevingslicht-interrupt.
- setLightIntLowThreshold(threshold: int) None¶
Stel de 16-bits lage drempelwaarde in die wordt gebruikt voor de omgevingslicht-interrupt.
Interrupt-inschakelingen en -wisbewerkingen¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
MicroPython-subklasse van
APDS9960. Identieke publieke API, maar de onderliggende registertoegang gebruiktreadfrom_mem- enwriteto_mem-aanroepen inmachine.I2C-stijl in plaats van methoden in SMBus-stijl. Dit is de klasse die op OpenMV-/MicroPython-doelen moet worden gebruikt.
Uitzonderingen¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Subklasse van
ValueError. Gegenereerd door de constructor vanAPDS9960wanneer de waarde die uit het ID-register van de chip wordt gelezen niet in de lijstvalid_idvoorkomt.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Subklasse van
ValueError. Gegenereerd doorAPDS9960.setMode()wanneer het argumentmodebuiten het bereikAPDS9960_MODE_POWER..\APDS9960_MODE_ALLvalt.
Constanten¶
I2C-adres en apparaat-ID’s¶
Gebarenafstemming¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Minimale samplemagnitude (per fotodiode) die door de gebarendecoder wordt gebruikt bij het zoeken naar de eerste/laatste in-bereik FIFO-samples.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Drempelwaarde op de geaccumuleerde U/D- en L/R-deltas waarboven de decoder zich vastlegt op een veegrichting.
Kenmerkmodi¶
Deze waarden worden doorgegeven aan APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
Sentinelwaarde (
7) dieAPDS9960.setMode()opdraagt om elke bit in het ENABLE-register tegelijk in of uit te schakelen.
LED-drivestromen¶
Nabijheidsversterking (PGAIN)¶
Omgevingslichtversterking (AGAIN)¶
Gebarenversterking (GGAIN)¶
LED-boost¶
- apds9960.APDS9960_LED_BOOST_300: int¶
300% LED-boost (
3). Automatisch toegepast doorAPDS9960.enableGestureSensor().
Gebaren-wachttijden¶
Gebarenrichtingen¶
Deze waarden worden geretourneerd door APDS9960.readGesture().
Gebarentoestanden¶
Interne toestandswaarden die via de gebarentoestandsmachine worden gerapporteerd.