apds9960 — läheisyys-, ele- ja värisensorin ajuri

Tämä moduuli tarjoaa ajurin Broadcom/Avago APDS9960 -digitaaliselle läheisyys-, ympäristönvalo-, RGB-väri- ja elesensorille I2C:n välityksellä. Ajuri paljastaa piirrekohtaiset käyttöönotto-/poiskytkentäohjaimet, raakakanavalukemat (kirkkaus, R, G, B, läheisyys) sekä ohjelmistopohjaisen eleen purkamisen tilakoneen, joka luokittelee pyyhkäisyt ylös/alas/vasemmalle/oikealle sekä lähelle/kauas -eleet piirin sisäisestä 4-valodiodisesta FIFO-puskurista.

Esimerkkikäyttö:

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)

Luokat

class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])

Luo APDS9960-ajuriinstanssin.

  • bus on määritetty I2C-väyläobjekti, jota käytetään sensorin kanssa kommunikointiin. Perusluokka tekee SMBus-tyylisiä read_byte_data-, write_byte_data- ja read_i2c_block_data -kutsuja; MicroPythonin machine.I2C-väylälle käytä sen sijaan luokkaa uAPDS9960.

  • address on laitteen 7-bittinen I2C-osoite. Oletusarvo on APDS9960_I2C_ADDR (0x39).

  • valid_id on luettelo hyväksyttävistä arvoista, joita piirin ID-rekisteri palauttaa. Oletusarvo on APDS9960_DEV_ID.

Konstruktori lukee laitteen ID:n ja nostaa poikkeuksen ADPS9960InvalidDevId, jos se ei ole listassa valid_id. Tämän jälkeen se poistaa käytöstä jokaisen piirteen, ohjelmoi oletusarvoiset ATIME/WTIME/PPULSE-arvot sekä soveltaa oletusarvoiset LED-virran, läheisyysvahvistuksen, ALS-vahvistuksen, läheisyyskynnysarvot, ympäristönvalon kynnysarvot, pysyvyyden ja eleenkäsittelijän kokoonpanon (sisääntulo-/poistumiskynnysarvot, GCONF1, elevahvistus, eleen LED-virta, eleen odotusaika, eleen siirtymät, GPULSE, GCONF3 ja eleen keskeytyksen käyttöönotto).

Tila- ja virranhallinta

getMode() int

Palauttaa ENABLE-rekisterin raaka-arvon, joka koodaa, mitkä piirteet ovat tällä hetkellä käytössä (virta, ALS, läheisyys, odotus, ALS-keskeytys, läheisyyskeskeytys, ele).

setMode(mode: int, enable: bool = True) None

Ota käyttöön tai poista käytöstä yksittäinen piirre ENABLE-rekisterissä. mode on oltava yksi APDS9960_MODE_* -arvoista (APDS9960_MODE_POWER ..\ APDS9960_MODE_ALL). Kun mode on APDS9960_MODE_ALL, kaikki bitit kytketään päälle tai pois kerralla. Nostaa poikkeuksen ADPS9960InvalidMode alueen ulkopuolisille arvoille.

enablePower() None

Kytke APDS9960 päälle (asettaa PON-bitin ENABLE-rekisterissä).

disablePower() None

Kytke APDS9960 pois päältä (tyhjentää PON-bitin ENABLE-rekisterissä).

Ympäristönvalo- / RGB-sensori

enableLightSensor(interrupts: bool = True) None

Palauta oletusarvoinen ALS-vahvistus, määritä ALS-keskeytyksen käyttöönottobitti, kytke laite päälle ja ota käyttöön ympäristönvalo-/väri-engine.

disableLightSensor() None

Poista käytöstä ALS-keskeytys ja pysäytä ympäristönvalo-/väri-engine.

readAmbientLight() int

Lue kirkkauskanavan ympäristönvalotaso 16-bittisenä etumerkittömänä arvona.

readRedLight() int

Lue punaisen kanavan taso 16-bittisenä etumerkittömänä arvona.

readGreenLight() int

Lue vihreän kanavan taso 16-bittisenä etumerkittömänä arvona.

readBlueLight() int

Lue sinisen kanavan taso 16-bittisenä etumerkittömänä arvona.

Läheisyyssensori

enableProximitySensor(interrupts: bool = True) None

Palauta oletusarvoinen läheisyysvahvistus ja LED-virta, määritä läheisyyskeskeytyksen käyttöönottobitti, kytke laite päälle ja ota käyttöön läheisyys-engine.

disableProximitySensor() None

Poista käytöstä läheisyyskeskeytys ja pysäytä läheisyys-engine.

readProximity() int

Lue läheisyystaso 8-bittisenä etumerkittömänä arvona.

Ele-engine

enableGestureSensor(interrupts: bool = True) None

Nollaa eleen tila, aseta WTIME ja eleen pulssimäärä, tehosta LED 300 %:iin, määritä eleen keskeytyksen käyttöönottobitti, siirry eleen tilakoneeseen, kytke laite päälle ja ota käyttöön odotus-, läheisyys- ja eletilat.

disableGestureSensor() None

Nollaa eleen tila, poista käytöstä eleen keskeytys ja tilakone sekä pysäytä ele-engine.

isGestureAvailable() bool

Palauttaa True, jos eleen tilarekisterin GVALID-bitti on asetettu, mikä ilmaisee, että eleen FIFO-data on valmis luettavaksi.

readGesture() int

Tyhjennä eleen FIFO-puskuri, suorita sisäänrakennettu eleen purkaja ja palauta yksi APDS9960_DIR_* -suuntavakioista. Palauttaa APDS9960_DIR_NONE, jos engine ei ole käynnissä, kelvollista dataa ei ole saatavilla tai data ei ratkennut tunnistetuksi eleeksi.

resetGestureParameters() None

Tyhjennä sisäinen eleen FIFO-puskuri, deltat, laskurit, lähelle/kauas-laskurit, tila ja viimeksi purettu liike.

processGestureData() bool

Käsittele tällä hetkellä puskuroidut raa’at U/D/L/R FIFO-näytteet päivittääksesi U/D- ja L/R-deltat sekä lähelle/kauas-laskurit. Palauttaa True, jos lähelle- tai kauas-tapahtuma havaittiin, muutoin False.

decodeGesture() bool

Muunna nykyiset U/D- ja L/R-laskurit sekä kertyneet deltat suunnaksi, joka tallennetaan sisäiseen gesture_motion_ -kenttään. Palauttaa True, kun suunta tunnistetaan, muutoin False.

Läheisyyskynnysarvot

getProxIntLowThresh() int

Palauta matala läheisyyskeskeytyksen kynnysarvo (PILT-rekisteri).

setProxIntLowThresh(threshold: int) None

Aseta matala läheisyyskeskeytyksen kynnysarvo.

getProxIntHighThresh() int

Palauta korkea läheisyyskeskeytyksen kynnysarvo (PIHT-rekisteri).

setProxIntHighThresh(threshold: int) None

Aseta korkea läheisyyskeskeytyksen kynnysarvo.

getProximityIntLowThreshold() int

Alias metodille getProxIntLowThresh().

setProximityIntLowThreshold(threshold: int) None

Alias metodille setProxIntLowThresh().

getProximityIntHighThreshold() int

Alias metodille getProxIntHighThresh().

setProximityIntHighThreshold(threshold: int) None

Alias metodille setProxIntHighThresh().

LED-virta, vahvistus ja tehostus

getLEDDrive() int

Palauta läheisyyteen ja ALS:ään käytetty LED-virran voimakkuus. Koodattu yhtenä APDS9960_LED_DRIVE_* -arvoista (0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12,5 mA).

setLEDDrive(drive: int) None

Aseta läheisyyteen ja ALS:ään käytetty LED-virran voimakkuus. drive on yksi APDS9960_LED_DRIVE_* -arvoista.

getProximityGain() int

Palauta läheisyysvastaanottimen vahvistus. Koodattu yhtenä APDS9960_PGAIN_* -arvoista (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setProximityGain(drive: int) None

Aseta läheisyysvastaanottimen vahvistus. drive on yksi APDS9960_PGAIN_* -arvoista.

getAmbientLightGain() int

Palauta ympäristönvalosensorin vahvistus. Koodattu yhtenä APDS9960_AGAIN_* -arvoista (0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).

setAmbientLightGain(drive: int) None

Aseta ympäristönvalosensorin vahvistus. drive on yksi APDS9960_AGAIN_* -arvoista.

getLEDBoost() int

Palauta LED-virran tehostus. Koodattu yhtenä APDS9960_LED_BOOST_* -arvoista (0 = 100 %, 1 = 150 %, 2 = 200 %, 3 = 300 %).

setLEDBoost(boost: int) None

Aseta LED-virran tehostus. boost on yksi APDS9960_LED_BOOST_* -arvoista.

Läheisyysvahvistuksen kompensointi ja valodiodimaski

getProxGainCompEnable() bool

Palauttaa True, jos läheisyysvahvistuksen kompensointi on käytössä.

setProxGainCompEnable(enable: bool) None

Ota käyttöön tai poista käytöstä läheisyysvahvistuksen kompensointi.

getProxPhotoMask() int

Palauta poistettujen läheisyysvalodiodien 4-bittinen maski. Bitit kartoittuvat seuraavasti: 3=UP, 2=DOWN, 1=LEFT, 0=RIGHT; 1 poistaa valodiodin käytöstä ja 0 ottaa sen käyttöön.

setProxPhotoMask(mask: int) None

Aseta poistettujen läheisyysvalodiodien 4-bittinen maski (katso yllä oleva koodaus).

Eleen kokoonpano

getGestureEnterThresh() int

Palauta läheisyyskynnysarvo, joka vaaditaan eletilaan siirtymiseen.

setGestureEnterThresh(threshold: int) None

Aseta läheisyyskynnysarvo, joka vaaditaan eletilaan siirtymiseen.

getGestureExitThresh() int

Palauta läheisyyskynnysarvo, joka vaaditaan eletilasta poistumiseen.

setGestureExitThresh(threshold: int) None

Aseta läheisyyskynnysarvo, joka vaaditaan eletilasta poistumiseen.

getGestureGain() int

Palauta eletilan aikana käytetty valodiodivahvistus. Koodattu yhtenä APDS9960_GGAIN_* -arvoista (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setGestureGain(gain: int) None

Aseta eletilan aikana käytetty valodiodivahvistus.

getGestureLEDDrive() int

Palauta eletilan aikana käytetty LED-virta. Koodattu yhtenä APDS9960_LED_DRIVE_* -arvoista.

setGestureLEDDrive(drive: int) None

Aseta eletilan aikana käytetty LED-virta.

getGestureWaitTime() int

Palauta vähävirtainen odotusaika eletunnistusten välillä. Koodattu yhtenä APDS9960_GWTIME_* -arvoista (0 = 0 ms .. 7 = 39,2 ms).

setGestureWaitTime(time: int) None

Aseta vähävirtainen odotusaika eletunnistusten välillä.

getGestureMode() bool

Palauttaa True, jos eleen tilakone on tällä hetkellä käynnissä.

setGestureMode(enable: bool) None

Siirry eleen tilakoneeseen tai poistu siitä.

Ympäristönvalon keskeytyksen kynnysarvot

getLightIntLowThreshold() int

Palauta ympäristönvalon keskeytykseen käytetty 16-bittinen matala kynnysarvo.

setLightIntLowThreshold(threshold: int) None

Aseta ympäristönvalon keskeytykseen käytetty 16-bittinen matala kynnysarvo.

getLightIntHighThreshold() int

Palauta ympäristönvalon keskeytykseen käytetty 16-bittinen korkea kynnysarvo.

setLightIntHighThreshold(threshold: int) None

Aseta ympäristönvalon keskeytykseen käytetty 16-bittinen korkea kynnysarvo.

Keskeytysten käyttöönotot ja tyhjennykset

getAmbientLightIntEnable() bool

Palauttaa True, jos ympäristönvalon keskeytykset ovat käytössä.

setAmbientLightIntEnable(enable: bool) None

Ota käyttöön tai poista käytöstä ympäristönvalon keskeytykset.

getProximityIntEnable() bool

Palauttaa True, jos läheisyyskeskeytykset ovat käytössä.

setProximityIntEnable(enable: bool) None

Ota käyttöön tai poista käytöstä läheisyyskeskeytykset.

getGestureIntEnable() bool

Palauttaa True, jos eleen keskeytykset ovat käytössä.

setGestureIntEnable(enable: bool) None

Ota käyttöön tai poista käytöstä eleen keskeytykset.

clearAmbientLightInt() None

Tyhjennä odottava ympäristönvalon keskeytys.

clearProximityInt() None

Tyhjennä odottava läheisyyskeskeytys.

class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])

Luokan APDS9960 MicroPython-alaluokka. Julkinen API on identtinen, mutta alla oleva rekisteripääsy käyttää machine.I2C-tyylisiä readfrom_mem- ja writeto_mem -kutsuja SMBus-tyylisten metodien sijaan. Tätä luokkaa tulee käyttää OpenMV- / MicroPython-kohteissa.

Poikkeukset

exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)

Luokan ValueError alaluokka. Nostaa APDS9960-konstruktori, kun piirin ID-rekisteristä luettu arvo ei ole listassa valid_id.

exception apds9960.ADPS9960InvalidMode(mode: int)

Luokan ValueError alaluokka. Nostaa metodi APDS9960.setMode(), kun mode-argumentti on alueen APDS9960_MODE_POWER..\ APDS9960_MODE_ALL ulkopuolella.

Vakiot

I2C-osoite ja laite-ID:t

apds9960.APDS9960_I2C_ADDR: int

APDS9960:n oletusarvoinen 7-bittinen I2C-osoite (0x39).

apds9960.APDS9960_DEV_ID: list

Oletusarvoinen luettelo kelvollisista laite-ID-rekisteriarvoista ([0xAB, 0x9C, 0xA8, -0x55]).

Eleen viritys

apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int

Vähimmäisnäytteen voimakkuus (valodiodia kohti), jota eleen purkaja käyttää etsiessään ensimmäisiä/viimeisiä alueen sisäisiä FIFO-näytteitä.

apds9960.APDS9960_GESTURE_SENSITIVITY_1: int

Kynnysarvo kertyneille U/D- ja L/R-deltoille, jonka yli purkaja sitoutuu pyyhkäisysuuntaan.

apds9960.APDS9960_GESTURE_SENSITIVITY_2: int

Kynnysarvo askelkohtaisille U/D- ja L/R-deltoille, jonka alittuessa purkaja pitää näytettä lähelle/kauas-ehdokkaana eikä pyyhkäisynä.

apds9960.APDS9960_TIME_FIFO_PAUSE: int

Millisekunnit, jotka elesilmukka nukkuu FIFO-tyhjennysten välillä.

Piirretilat

Nämä arvot välitetään metodille APDS9960.setMode().

apds9960.APDS9960_MODE_POWER: int

Virrankytkentäbitti (0).

apds9960.APDS9960_MODE_AMBIENT_LIGHT: int

Ympäristönvalo-/väri-enginen käyttöönottobitti (1).

apds9960.APDS9960_MODE_PROXIMITY: int

Läheisyys-enginen käyttöönottobitti (2).

apds9960.APDS9960_MODE_WAIT: int

Odotustilan käyttöönottobitti (3).

apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int

Ympäristönvalon keskeytyksen käyttöönottobitti (4).

apds9960.APDS9960_MODE_PROXIMITY_INT: int

Läheisyyskeskeytyksen käyttöönottobitti (5).

apds9960.APDS9960_MODE_GESTURE: int

Ele-enginen käyttöönottobitti (6).

apds9960.APDS9960_MODE_ALL: int

Vartiointiarvo (7), joka käskee metodin APDS9960.setMode() ottamaan käyttöön tai poistamaan käytöstä jokaisen ENABLE-rekisterin bitin kerralla.

LED-virrat

apds9960.APDS9960_LED_DRIVE_100MA: int

100 mA:n LED-virta (0).

apds9960.APDS9960_LED_DRIVE_50MA: int

50 mA:n LED-virta (1).

apds9960.APDS9960_LED_DRIVE_25MA: int

25 mA:n LED-virta (2).

apds9960.APDS9960_LED_DRIVE_12_5MA: int

12,5 mA:n LED-virta (3).

Läheisyysvahvistus (PGAIN)

apds9960.APDS9960_PGAIN_1X: int

1x läheisyysvahvistus (0).

apds9960.APDS9960_PGAIN_2X: int

2x läheisyysvahvistus (1).

apds9960.APDS9960_PGAIN_4X: int

4x läheisyysvahvistus (2). Konstruktorin soveltama oletusarvo.

apds9960.APDS9960_PGAIN_8X: int

8x läheisyysvahvistus (3).

Ympäristönvalon vahvistus (AGAIN)

apds9960.APDS9960_AGAIN_1X: int

1x ALS-vahvistus (0).

apds9960.APDS9960_AGAIN_4X: int

4x ALS-vahvistus (1). Konstruktorin soveltama oletusarvo.

apds9960.APDS9960_AGAIN_16X: int

16x ALS-vahvistus (2).

apds9960.APDS9960_AGAIN_64X: int

64x ALS-vahvistus (3).

Elevahvistus (GGAIN)

apds9960.APDS9960_GGAIN_1X: int

1x elevahvistus (0).

apds9960.APDS9960_GGAIN_2X: int

2x elevahvistus (1).

apds9960.APDS9960_GGAIN_4X: int

4x elevahvistus (2). Konstruktorin soveltama oletusarvo.

apds9960.APDS9960_GGAIN_8X: int

8x elevahvistus (3).

LED-tehostus

apds9960.APDS9960_LED_BOOST_100: int

100 %:n LED-tehostus (0).

apds9960.APDS9960_LED_BOOST_150: int

150 %:n LED-tehostus (1).

apds9960.APDS9960_LED_BOOST_200: int

200 %:n LED-tehostus (2).

apds9960.APDS9960_LED_BOOST_300: int

300 %:n LED-tehostus (3). Metodin APDS9960.enableGestureSensor() automaattisesti soveltama.

Eleen odotusajat

apds9960.APDS9960_GWTIME_0MS: int

0 ms (0).

apds9960.APDS9960_GWTIME_2_8MS: int

2,8 ms (1). Konstruktorin soveltama oletusarvo.

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

Eleen suunnat

Nämä arvot palauttaa metodi APDS9960.readGesture().

apds9960.APDS9960_DIR_NONE: int

Ei elettä havaittu (0).

apds9960.APDS9960_DIR_LEFT: int

Pyyhkäisy vasemmalle (1).

apds9960.APDS9960_DIR_RIGHT: int

Pyyhkäisy oikealle (2).

apds9960.APDS9960_DIR_UP: int

Pyyhkäisy ylös (3).

apds9960.APDS9960_DIR_DOWN: int

Pyyhkäisy alas (4).

apds9960.APDS9960_DIR_NEAR: int

Lähelle-tapahtuma (5).

apds9960.APDS9960_DIR_FAR: int

Kauas-tapahtuma (6).

apds9960.APDS9960_DIR_ALL: int

Vartiointiarvo (7), jota käytetään sisäisesti edustamaan ”mitä tahansa suuntaa”.

Eleen tilat

Eleen tilakoneen kautta raportoidut sisäiset tila-arvot.

apds9960.APDS9960_STATE_NA: int

Ei tilaa (0).

apds9960.APDS9960_STATE_NEAR: int

Lähelle-tila havaittu (1).

apds9960.APDS9960_STATE_FAR: int

Kauas-tila havaittu (2).

apds9960.APDS9960_STATE_ALL: int

Vartiointiarvo (3), jota käytetään sisäisesti edustamaan ”mitä tahansa tilaa”.