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.

  • bus is een geconfigureerd I2C-busobject dat wordt gebruikt om met de sensor te communiceren. De basisklasse doet read_byte_data-, write_byte_data- en read_i2c_block_data-aanroepen in SMBus-stijl; gebruik voor de machine.I2C van MicroPython in plaats daarvan uAPDS9960.

  • address is het 7-bits I2C-adres van het apparaat. Standaard APDS9960_I2C_ADDR (0x39).

  • valid_id is een lijst met aanvaardbare waarden die door het ID-register van de chip worden geretourneerd. Standaard APDS9960_DEV_ID.

De constructor leest de apparaat-ID en genereert ADPS9960InvalidDevId als deze niet in valid_id staat. 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. mode moet een van de APDS9960_MODE_*-waarden zijn (APDS9960_MODE_POWER ..\ APDS9960_MODE_ALL). Wanneer mode gelijk is aan APDS9960_MODE_ALL, worden alle bits tegelijk in- of uitgeschakeld. Genereert ADPS9960InvalidMode voor waarden buiten het bereik.

enablePower() None

Schakel de APDS9960 in (stelt de PON-bit in ENABLE in).

disablePower() None

Schakel de APDS9960 uit (wist de PON-bit in ENABLE).

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.

disableLightSensor() None

Schakel de ALS-interrupt uit en stop de omgevingslicht-/kleurengine.

readAmbientLight() int

Lees het omgevingslichtniveau van het clear-kanaal als een 16-bits niet-ondertekende waarde.

readRedLight() int

Lees het niveau van het rode kanaal als een 16-bits niet-ondertekende waarde.

readGreenLight() int

Lees het niveau van het groene kanaal als een 16-bits niet-ondertekende waarde.

readBlueLight() int

Lees het niveau van het blauwe kanaal als een 16-bits niet-ondertekende waarde.

Nabijheidssensor

enableProximitySensor(interrupts: bool = True) None

Herstel de standaard nabijheidsversterking en LED-drive, configureer de inschakelbit voor de nabijheids-interrupt, schakel het apparaat in en activeer de nabijheidsengine.

disableProximitySensor() None

Schakel de nabijheids-interrupt uit en stop de nabijheidsengine.

readProximity() int

Lees het nabijheidsniveau als een 8-bits niet-ondertekende waarde.

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 True als 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. Retourneert APDS9960_DIR_NONE als 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.

processGestureData() bool

Verwerk de ruwe U/D/L/R-FIFO-samples die momenteel zijn gebufferd om de U/D- en L/R-deltas en de nabij/ver-tellers bij te werken. Retourneert True als een nabij- of ver-gebeurtenis is gedetecteerd, anders False.

decodeGesture() bool

Converteer de huidige U/D- en L/R-tellingen en geaccumuleerde deltas naar een richting die wordt opgeslagen in het interne veld gesture_motion_. Retourneert True wanneer een richting wordt herkend, anders False.

Nabijheidsdrempelwaarden

getProxIntLowThresh() int

Retourneer de lage nabijheids-interruptdrempelwaarde (PILT-register).

setProxIntLowThresh(threshold: int) None

Stel de lage nabijheids-interruptdrempelwaarde in.

getProxIntHighThresh() int

Retourneer de hoge nabijheids-interruptdrempelwaarde (PIHT-register).

setProxIntHighThresh(threshold: int) None

Stel de hoge nabijheids-interruptdrempelwaarde in.

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. drive is een van de APDS9960_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. drive is een van de APDS9960_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. drive is een van de APDS9960_AGAIN_*-waarden.

getLEDBoost() int

Retourneer de LED-stroomboost. Gecodeerd als een van de APDS9960_LED_BOOST_*-waarden (0 = 100%, 1 = 150%, 2 = 200%, 3 = 300%).

setLEDBoost(boost: int) None

Stel de LED-stroomboost in. boost is een van de APDS9960_LED_BOOST_*-waarden.

Nabijheidsversterkingscompensatie en fotodiodemasker

getProxGainCompEnable() bool

Retourneer True als nabijheidsversterkingscompensatie is ingeschakeld.

setProxGainCompEnable(enable: bool) None

Schakel nabijheidsversterkingscompensatie in of uit.

getProxPhotoMask() int

Retourneer het 4-bits masker van uitgeschakelde nabijheidsfotodiodes. De bits worden toegewezen als 3=UP, 2=DOWN, 1=LEFT, 0=RIGHT; 1 schakelt een fotodiode uit en 0 schakelt deze in.

setProxPhotoMask(mask: int) None

Stel het 4-bits masker van uitgeschakelde nabijheidsfotodiodes in (zie de codering hierboven).

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.

getGestureWaitTime() int

Retourneer de laagvermogen-wachttijd tussen gebarendetecties. Gecodeerd als een van de APDS9960_GWTIME_*-waarden (0 = 0 ms .. 7 = 39.2 ms).

setGestureWaitTime(time: int) None

Stel de laagvermogen-wachttijd tussen gebarendetecties in.

getGestureMode() bool

Retourneer True als de gebarentoestandsmachine momenteel actief is.

setGestureMode(enable: bool) None

Betreed of verlaat de gebarentoestandsmachine.

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.

getLightIntHighThreshold() int

Retourneer de 16-bits hoge drempelwaarde die wordt gebruikt voor de omgevingslicht-interrupt.

setLightIntHighThreshold(threshold: int) None

Stel de 16-bits hoge drempelwaarde in die wordt gebruikt voor de omgevingslicht-interrupt.

Interrupt-inschakelingen en -wisbewerkingen

getAmbientLightIntEnable() bool

Retourneer True als omgevingslicht-interrupts zijn ingeschakeld.

setAmbientLightIntEnable(enable: bool) None

Schakel omgevingslicht-interrupts in of uit.

getProximityIntEnable() bool

Retourneer True als nabijheids-interrupts zijn ingeschakeld.

setProximityIntEnable(enable: bool) None

Schakel nabijheids-interrupts in of uit.

getGestureIntEnable() bool

Retourneer True als gebaren-interrupts zijn ingeschakeld.

setGestureIntEnable(enable: bool) None

Schakel gebaren-interrupts in of uit.

clearAmbientLightInt() None

Wis een openstaande omgevingslicht-interrupt.

clearProximityInt() None

Wis een openstaande nabijheids-interrupt.

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 gebruikt readfrom_mem- en writeto_mem-aanroepen in machine.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 van APDS9960 wanneer de waarde die uit het ID-register van de chip wordt gelezen niet in de lijst valid_id voorkomt.

exception apds9960.ADPS9960InvalidMode(mode: int)

Subklasse van ValueError. Gegenereerd door APDS9960.setMode() wanneer het argument mode buiten het bereik APDS9960_MODE_POWER..\ APDS9960_MODE_ALL valt.

Constanten

I2C-adres en apparaat-ID’s

apds9960.APDS9960_I2C_ADDR: int

Standaard 7-bits I2C-adres van de APDS9960 (0x39).

apds9960.APDS9960_DEV_ID: list

Standaardlijst met geldige apparaat-ID-registerwaarden ([0xAB, 0x9C, 0xA8, -0x55]).

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.

apds9960.APDS9960_GESTURE_SENSITIVITY_2: int

Drempelwaarde op de U/D- en L/R-deltas per stap waaronder de decoder een sample als een nabij/ver-kandidaat beschouwt in plaats van een veeg.

apds9960.APDS9960_TIME_FIFO_PAUSE: int

Milliseconden die de gebarenlus slaapt tussen FIFO-leegmaakbewerkingen.

Kenmerkmodi

Deze waarden worden doorgegeven aan APDS9960.setMode().

apds9960.APDS9960_MODE_POWER: int

Power-on-bit (0).

apds9960.APDS9960_MODE_AMBIENT_LIGHT: int

Inschakelbit voor de omgevingslicht-/kleurengine (1).

apds9960.APDS9960_MODE_PROXIMITY: int

Inschakelbit voor de nabijheidsengine (2).

apds9960.APDS9960_MODE_WAIT: int

Inschakelbit voor de wachttoestand (3).

apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int

Inschakelbit voor de omgevingslicht-interrupt (4).

apds9960.APDS9960_MODE_PROXIMITY_INT: int

Inschakelbit voor de nabijheids-interrupt (5).

apds9960.APDS9960_MODE_GESTURE: int

Inschakelbit voor de gebarenengine (6).

apds9960.APDS9960_MODE_ALL: int

Sentinelwaarde (7) die APDS9960.setMode() opdraagt om elke bit in het ENABLE-register tegelijk in of uit te schakelen.

LED-drivestromen

apds9960.APDS9960_LED_DRIVE_100MA: int

100 mA LED-drive (0).

apds9960.APDS9960_LED_DRIVE_50MA: int

50 mA LED-drive (1).

apds9960.APDS9960_LED_DRIVE_25MA: int

25 mA LED-drive (2).

apds9960.APDS9960_LED_DRIVE_12_5MA: int

12.5 mA LED-drive (3).

Nabijheidsversterking (PGAIN)

apds9960.APDS9960_PGAIN_1X: int

1x nabijheidsversterking (0).

apds9960.APDS9960_PGAIN_2X: int

2x nabijheidsversterking (1).

apds9960.APDS9960_PGAIN_4X: int

4x nabijheidsversterking (2). Standaard toegepast door de constructor.

apds9960.APDS9960_PGAIN_8X: int

8x nabijheidsversterking (3).

Omgevingslichtversterking (AGAIN)

apds9960.APDS9960_AGAIN_1X: int

1x ALS-versterking (0).

apds9960.APDS9960_AGAIN_4X: int

4x ALS-versterking (1). Standaard toegepast door de constructor.

apds9960.APDS9960_AGAIN_16X: int

16x ALS-versterking (2).

apds9960.APDS9960_AGAIN_64X: int

64x ALS-versterking (3).

Gebarenversterking (GGAIN)

apds9960.APDS9960_GGAIN_1X: int

1x gebarenversterking (0).

apds9960.APDS9960_GGAIN_2X: int

2x gebarenversterking (1).

apds9960.APDS9960_GGAIN_4X: int

4x gebarenversterking (2). Standaard toegepast door de constructor.

apds9960.APDS9960_GGAIN_8X: int

8x gebarenversterking (3).

LED-boost

apds9960.APDS9960_LED_BOOST_100: int

100% LED-boost (0).

apds9960.APDS9960_LED_BOOST_150: int

150% LED-boost (1).

apds9960.APDS9960_LED_BOOST_200: int

200% LED-boost (2).

apds9960.APDS9960_LED_BOOST_300: int

300% LED-boost (3). Automatisch toegepast door APDS9960.enableGestureSensor().

Gebaren-wachttijden

apds9960.APDS9960_GWTIME_0MS: int

0 ms (0).

apds9960.APDS9960_GWTIME_2_8MS: int

2.8 ms (1). Standaard toegepast door de constructor.

apds9960.APDS9960_GWTIME_5_6MS: int

5.6 ms (2).

apds9960.APDS9960_GWTIME_8_4MS: int

8.4 ms (3).

apds9960.APDS9960_GWTIME_14_0MS: int

14.0 ms (4).

apds9960.APDS9960_GWTIME_22_4MS: int

22.4 ms (5).

apds9960.APDS9960_GWTIME_30_8MS: int

30.8 ms (6).

apds9960.APDS9960_GWTIME_39_2MS: int

39.2 ms (7).

Gebarenrichtingen

Deze waarden worden geretourneerd door APDS9960.readGesture().

apds9960.APDS9960_DIR_NONE: int

Geen gebaar gedetecteerd (0).

apds9960.APDS9960_DIR_LEFT: int

Veeg naar links (1).

apds9960.APDS9960_DIR_RIGHT: int

Veeg naar rechts (2).

apds9960.APDS9960_DIR_UP: int

Veeg omhoog (3).

apds9960.APDS9960_DIR_DOWN: int

Veeg omlaag (4).

apds9960.APDS9960_DIR_NEAR: int

Nabij-gebeurtenis (5).

apds9960.APDS9960_DIR_FAR: int

Ver-gebeurtenis (6).

apds9960.APDS9960_DIR_ALL: int

Sentinelwaarde (7) die intern wordt gebruikt om “elke richting” te vertegenwoordigen.

Gebarentoestanden

Interne toestandswaarden die via de gebarentoestandsmachine worden gerapporteerd.

apds9960.APDS9960_STATE_NA: int

Geen toestand (0).

apds9960.APDS9960_STATE_NEAR: int

Nabij-toestand gedetecteerd (1).

apds9960.APDS9960_STATE_FAR: int

Ver-toestand gedetecteerd (2).

apds9960.APDS9960_STATE_ALL: int

Sentinelwaarde (3) die intern wordt gebruikt om “elke toestand” te vertegenwoordigen.