apds9960 — drivrutin för närhets-, gest- och färgsensor¶
Den här modulen tillhandahåller en drivrutin för Broadcom/Avago APDS9960, en digital sensor för närhet, omgivningsljus, RGB-färg och gester över I2C. Drivrutinen exponerar aktiverings- och inaktiveringskontroller per funktion, råläsningar per kanal (clear, R, G, B, närhet) och en tillståndsmaskin för avkodning av gester i programvara som klassificerar svep uppåt/nedåt/vänster/höger samt gester för nära/fjärran från chippets inbyggda FIFO med 4 fotodioder.
Exempelanvändning:
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)
Klasser¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Konstruerar en instans av APDS9960-drivrutinen.
busär ett konfigurerat I2C-bussobjekt som används för att kommunicera med sensorn. Basklassen utfärdar anrop av SMBus-typ medread_byte_data,write_byte_dataochread_i2c_block_data; för MicroPythonsmachine.I2Canvänder duuAPDS9960i stället.addressär enhetens 7-bitars I2C-adress. Standardvärdet ärAPDS9960_I2C_ADDR(0x39).valid_idär en lista över godtagbara värden som returneras av chippets ID-register. Standardvärdet ärAPDS9960_DEV_ID.
Konstruktorn läser enhetens ID och ger upphov till
ADPS9960InvalidDevIdom det inte finns ivalid_id. Den inaktiverar sedan varje funktion, programmerar standardvärdena för ATIME/WTIME/PPULSE och tillämpar standardinställningarna för LED-ström, närhetsförstärkning, ALS-förstärkning, närhetströsklar, omgivningsljuströsklar, persistens och konfiguration av gestmotorn (in-/utträdströsklar, GCONF1, gestförstärkning, LED-ström för gest, väntetid för gest, gestoffset, GPULSE, GCONF3 och aktivering av gestavbrott).Läges- och effektstyrning¶
- getMode() int¶
Returnerar råvärdet i ENABLE-registret, som kodar vilka funktioner som för närvarande är aktiverade (effekt, ALS, närhet, vänta, ALS-avbrott, närhetsavbrott, gest).
- setMode(mode: int, enable: bool = True) None¶
Aktiverar eller inaktiverar en enskild funktion i ENABLE-registret.
modemåste vara ett av värdenaAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). NärmodeärAPDS9960_MODE_ALLslås alla bitar på eller av samtidigt. Ger upphov tillADPS9960InvalidModeför värden utanför intervallet.
Omgivningsljus-/RGB-sensor¶
- enableLightSensor(interrupts: bool = True) None¶
Återställer standardvärdet för ALS-förstärkning, konfigurerar aktiveringsbiten för ALS-avbrott, sätter på enheten och aktiverar omgivningsljus-/färgmotorn.
Närhetssensor¶
Gestmotor¶
- enableGestureSensor(interrupts: bool = True) None¶
Återställer gesttillståndet, ställer in WTIME och pulsantalet för gest, höjer LED:n till 300 %, konfigurerar aktiveringsbiten för gestavbrott, går in i gesttillståndsmaskinen, sätter på enheten och aktiverar lägena vänta, närhet och gest.
- disableGestureSensor() None¶
Återställer gesttillståndet, inaktiverar gestavbrottet och tillståndsmaskinen och stoppar gestmotorn.
- isGestureAvailable() bool¶
Returnerar
Trueom GVALID-biten i gestens statusregister är satt, vilket indikerar att data i gest-FIFO:n är redo att läsas.
- readGesture() int¶
Tömmer gest-FIFO:n, kör den inbyggda gestavkodaren och returnerar en av riktningskonstanterna
APDS9960_DIR_*. ReturnerarAPDS9960_DIR_NONEom motorn inte körs, om inga giltiga data finns tillgängliga eller om data inte gick att tolka som en igenkänd gest.
- resetGestureParameters() None¶
Nollställer den interna gest-FIFO-bufferten, deltavärdena, antalen, nära/fjärran-räknarna, tillståndet och den senast avkodade rörelsen.
Närhetströsklar¶
- getProximityIntLowThreshold() int¶
Alias för
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias för
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias för
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias för
setProxIntHighThresh().
LED-ström, förstärkning och boost¶
- getLEDDrive() int¶
Returnerar LED-strömstyrkan som används för närhet och ALS. Kodas som ett av värdena
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12,5 mA).
- setLEDDrive(drive: int) None¶
Ställer in LED-strömstyrkan som används för närhet och ALS.
driveär ett av värdenaAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Returnerar närhetsmottagarens förstärkning. Kodas som ett av värdena
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Ställer in närhetsmottagarens förstärkning.
driveär ett av värdenaAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Returnerar omgivningsljussensorns förstärkning. Kodas som ett av värdena
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Ställer in omgivningsljussensorns förstärkning.
driveär ett av värdenaAPDS9960_AGAIN_*.
Förstärkningskompensation för närhet och fotodiodmask¶
- setProxGainCompEnable(enable: bool) None¶
Aktiverar eller inaktiverar förstärkningskompensation för närhet.
Gestkonfiguration¶
- setGestureEnterThresh(threshold: int) None¶
Ställer in närhetströskeln som krävs för att gå in i gestläge.
- setGestureExitThresh(threshold: int) None¶
Ställer in närhetströskeln som krävs för att lämna gestläge.
- getGestureGain() int¶
Returnerar fotodiodförstärkningen som används under gestläge. Kodas som ett av värdena
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Returnerar LED-drivströmmen som används under gestläge. Kodas som ett av värdena
APDS9960_LED_DRIVE_*.
Trösklar för omgivningsljusavbrott¶
- getLightIntLowThreshold() int¶
Returnerar den 16-bitars låga tröskeln som används för omgivningsljusavbrottet.
- setLightIntLowThreshold(threshold: int) None¶
Ställer in den 16-bitars låga tröskeln som används för omgivningsljusavbrottet.
Aktivering och rensning av avbrott¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
MicroPython-underklass till
APDS9960. Identiskt offentligt API, men den underliggande registeråtkomsten använder anrop avmachine.I2C-typ medreadfrom_memochwriteto_memi stället för metoder av SMBus-typ. Detta är klassen som ska användas på OpenMV-/MicroPython-mål.
Undantag¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Underklass till
ValueError. Ges upphov till avAPDS9960-konstruktorn när värdet som läses från chippets ID-register inte finns i listanvalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Underklass till
ValueError. Ges upphov till avAPDS9960.setMode()när argumentetmodeligger utanför intervalletAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Konstanter¶
I2C-adress och enhets-ID:n¶
Geststämning¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Minsta provmagnitud (per fotodiod) som används av gestavkodaren vid sökning efter de första/sista FIFO-proverna inom intervallet.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Tröskel för de ackumulerade U/D- och L/R-deltavärdena över vilken avkodaren bestämmer sig för en svepriktning.
Funktionslägen¶
Dessa värden skickas till APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
Vaktvärde (
7) som talar om förAPDS9960.setMode()att aktivera eller inaktivera varje bit i ENABLE-registret samtidigt.
LED-drivströmmar¶
Närhetsförstärkning (PGAIN)¶
Omgivningsljusförstärkning (AGAIN)¶
Gestförstärkning (GGAIN)¶
LED-boost¶
- apds9960.APDS9960_LED_BOOST_300: int¶
300 % LED-boost (
3). Tillämpas automatiskt avAPDS9960.enableGestureSensor().
Väntetider för gest¶
Gestriktningar¶
Dessa värden returneras av APDS9960.readGesture().
Gesttillstånd¶
Interna tillståndsvärden som rapporteras via gesttillståndsmaskinen.