apds9960 — Yakınlık, Hareket ve Renk Sensörü Sürücüsü#

Bu modül, Broadcom/Avago APDS9960 dijital yakınlık, ortam ışığı, RGB renk ve hareket sensörü için I2C üzerinden bir sürücü sağlar. Sürücü; özellik bazında etkinleştirme/devre dışı bırakma denetimlerini, ham kanal okumalarını (clear, R, G, B, yakınlık) ve çip üzerindeki 4 fotodiyotlu FIFO’dan yukarı/aşağı/sola/sağa kaydırma ve yakın/uzak hareketlerini sınıflandıran bir yazılımsal hareket çözme durum makinesini açığa çıkarır.

Örnek kullanım:

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)

Sınıflar#

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

Bir APDS9960 sürücü örneği oluşturur.

  • bus, sensörle iletişim kurmak için kullanılan, yapılandırılmış bir I2C veri yolu nesnesidir. Temel sınıf, SMBus tarzı read_byte_data, write_byte_data ve read_i2c_block_data çağrıları yapar; MicroPython’ın machine.I2C sınıfı için bunun yerine uAPDS9960 kullanın.

  • address, aygıtın 7 bitlik I2C adresidir. Varsayılan olarak APDS9960_I2C_ADDR (0x39) değerine sahiptir.

  • valid_id, çipin ID yazmacının döndürdüğü kabul edilebilir değerlerin bir listesidir. Varsayılan olarak APDS9960_DEV_ID değerine sahiptir.

Yapıcı, aygıt ID’sini okur ve değer valid_id içinde yoksa ADPS9960InvalidDevId yükseltir. Ardından her özelliği devre dışı bırakır, varsayılan ATIME/WTIME/PPULSE değerlerini programlar ve varsayılan LED sürüş akımını, yakınlık kazancını, ALS kazancını, yakınlık eşiklerini, ortam ışığı eşiklerini, kalıcılığı ve hareket motoru yapılandırmasını (giriş/çıkış eşikleri, GCONF1, hareket kazancı, hareket LED sürüş akımı, hareket bekleme süresi, hareket ofsetleri, GPULSE, GCONF3 ve hareket kesmesi etkinleştirme) uygular.

Mod ve güç denetimi#

getMode() int#

Hangi özelliklerin şu anda etkin olduğunu (güç, ALS, yakınlık, bekleme, ALS kesmesi, yakınlık kesmesi, hareket) kodlayan ENABLE yazmacının ham değerini döndürür.

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

ENABLE yazmacındaki tek bir özelliği etkinleştirir veya devre dışı bırakır. mode, APDS9960_MODE_* değerlerinden biri olmalıdır (APDS9960_MODE_POWER ..\ APDS9960_MODE_ALL). mode APDS9960_MODE_ALL olduğunda, tüm bitler aynı anda açılır veya kapatılır. Aralık dışı değerler için ADPS9960InvalidMode yükseltir.

enablePower() None#

APDS9960’ı açar (ENABLE içindeki PON bitini ayarlar).

disablePower() None#

APDS9960’ı kapatır (ENABLE içindeki PON bitini temizler).

Ortam ışığı / RGB sensörü#

enableLightSensor(interrupts: bool = True) None#

Varsayılan ALS kazancını geri yükler, ALS kesmesi etkinleştirme bitini yapılandırır, aygıtı açar ve ortam ışığı/renk motorunu etkinleştirir.

disableLightSensor() None#

ALS kesmesini devre dışı bırakır ve ortam ışığı/renk motorunu durdurur.

readAmbientLight() int#

Clear kanalı ortam ışığı seviyesini 16 bitlik işaretsiz bir değer olarak okur.

readRedLight() int#

Kırmızı kanal seviyesini 16 bitlik işaretsiz bir değer olarak okur.

readGreenLight() int#

Yeşil kanal seviyesini 16 bitlik işaretsiz bir değer olarak okur.

readBlueLight() int#

Mavi kanal seviyesini 16 bitlik işaretsiz bir değer olarak okur.

Yakınlık sensörü#

enableProximitySensor(interrupts: bool = True) None#

Varsayılan yakınlık kazancını ve LED sürüş akımını geri yükler, yakınlık kesmesi etkinleştirme bitini yapılandırır, aygıtı açar ve yakınlık motorunu etkinleştirir.

disableProximitySensor() None#

Yakınlık kesmesini devre dışı bırakır ve yakınlık motorunu durdurur.

readProximity() int#

Yakınlık seviyesini 8 bitlik işaretsiz bir değer olarak okur.

Hareket motoru#

enableGestureSensor(interrupts: bool = True) None#

Hareket durumunu sıfırlar, WTIME ve hareket darbe sayısını ayarlar, LED’i %300’e yükseltir, hareket kesmesi etkinleştirme bitini yapılandırır, hareket durum makinesine girer, aygıtı açar ve bekleme, yakınlık ve hareket modlarını etkinleştirir.

disableGestureSensor() None#

Hareket durumunu sıfırlar, hareket kesmesini ve durum makinesini devre dışı bırakır ve hareket motorunu durdurur.

isGestureAvailable() bool#

Hareket durum yazmacının GVALID biti ayarlıysa True döndürür; bu, hareket FIFO verisinin okunmaya hazır olduğunu gösterir.

readGesture() int#

Hareket FIFO’sunu boşaltır, yerleşik hareket çözücüyü çalıştırır ve APDS9960_DIR_* yön sabitlerinden birini döndürür. Motor çalışmıyorsa, geçerli veri yoksa veya veri tanınan bir harekete çözümlenmediyse APDS9960_DIR_NONE döndürür.

resetGestureParameters() None#

Dahili hareket FIFO arabelleğini, farkları (delta), sayımları, yakın/uzak sayaçlarını, durumu ve son çözülen hareketi temizler.

processGestureData() bool#

U/D ve L/R farklarını (delta) ve yakın/uzak sayaçlarını güncellemek için şu anda arabelleğe alınmış ham U/D/L/R FIFO örneklerini işler. Yakın veya uzak bir olay tespit edilirse True, aksi halde False döndürür.

decodeGesture() bool#

Geçerli U/D ve L/R sayımlarını ve biriken farkları (delta), dahili gesture_motion_ alanında saklanan bir yöne dönüştürür. Bir yön tanındığında True, aksi halde False döndürür.

Yakınlık eşikleri#

getProxIntLowThresh() int#

Düşük yakınlık kesmesi eşiğini (PILT yazmacı) döndürür.

setProxIntLowThresh(threshold: int) None#

Düşük yakınlık kesmesi eşiğini ayarlar.

getProxIntHighThresh() int#

Yüksek yakınlık kesmesi eşiğini (PIHT yazmacı) döndürür.

setProxIntHighThresh(threshold: int) None#

Yüksek yakınlık kesmesi eşiğini ayarlar.

getProximityIntLowThreshold() int#

getProxIntLowThresh() için takma ad.

setProximityIntLowThreshold(threshold: int) None#

setProxIntLowThresh() için takma ad.

getProximityIntHighThreshold() int#

getProxIntHighThresh() için takma ad.

setProximityIntHighThreshold(threshold: int) None#

setProxIntHighThresh() için takma ad.

LED sürüş akımı, kazanç ve güçlendirme#

getLEDDrive() int#

Yakınlık ve ALS için kullanılan LED sürüş gücünü döndürür. APDS9960_LED_DRIVE_* değerlerinden biri olarak kodlanır (0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).

setLEDDrive(drive: int) None#

Yakınlık ve ALS için kullanılan LED sürüş gücünü ayarlar. drive, APDS9960_LED_DRIVE_* değerlerinden biridir.

getProximityGain() int#

Yakınlık alıcısı kazancını döndürür. APDS9960_PGAIN_* değerlerinden biri olarak kodlanır (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setProximityGain(drive: int) None#

Yakınlık alıcısı kazancını ayarlar. drive, APDS9960_PGAIN_* değerlerinden biridir.

getAmbientLightGain() int#

Ortam ışığı sensörü kazancını döndürür. APDS9960_AGAIN_* değerlerinden biri olarak kodlanır (0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).

setAmbientLightGain(drive: int) None#

Ortam ışığı sensörü kazancını ayarlar. drive, APDS9960_AGAIN_* değerlerinden biridir.

getLEDBoost() int#

LED akım güçlendirmesini döndürür. APDS9960_LED_BOOST_* değerlerinden biri olarak kodlanır (0 = %100, 1 = %150, 2 = %200, 3 = %300).

setLEDBoost(boost: int) None#

LED akım güçlendirmesini ayarlar. boost, APDS9960_LED_BOOST_* değerlerinden biridir.

Yakınlık kazanç telafisi ve fotodiyot maskesi#

getProxGainCompEnable() bool#

Yakınlık kazanç telafisi etkinse True döndürür.

setProxGainCompEnable(enable: bool) None#

Yakınlık kazanç telafisini etkinleştirir veya devre dışı bırakır.

getProxPhotoMask() int#

Devre dışı bırakılmış yakınlık fotodiyotlarının 4 bitlik maskesini döndürür. Bitler şöyle eşlenir: 3=UP, 2=DOWN, 1=LEFT, 0=RIGHT; 1 bir fotodiyotu devre dışı bırakır ve 0 etkinleştirir.

setProxPhotoMask(mask: int) None#

Devre dışı bırakılmış yakınlık fotodiyotlarının 4 bitlik maskesini ayarlar (yukarıdaki kodlamaya bakın).

Hareket yapılandırması#

getGestureEnterThresh() int#

Hareket moduna girmek için gereken yakınlık eşiğini döndürür.

setGestureEnterThresh(threshold: int) None#

Hareket moduna girmek için gereken yakınlık eşiğini ayarlar.

getGestureExitThresh() int#

Hareket modundan çıkmak için gereken yakınlık eşiğini döndürür.

setGestureExitThresh(threshold: int) None#

Hareket modundan çıkmak için gereken yakınlık eşiğini ayarlar.

getGestureGain() int#

Hareket modu sırasında kullanılan fotodiyot kazancını döndürür. APDS9960_GGAIN_* değerlerinden biri olarak kodlanır (0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).

setGestureGain(gain: int) None#

Hareket modu sırasında kullanılan fotodiyot kazancını ayarlar.

getGestureLEDDrive() int#

Hareket modu sırasında kullanılan LED sürüş akımını döndürür. APDS9960_LED_DRIVE_* değerlerinden biri olarak kodlanır.

setGestureLEDDrive(drive: int) None#

Hareket modu sırasında kullanılan LED sürüş akımını ayarlar.

getGestureWaitTime() int#

Hareket tespitleri arasındaki düşük güçlü bekleme süresini döndürür. APDS9960_GWTIME_* değerlerinden biri olarak kodlanır (0 = 0 ms .. 7 = 39.2 ms).

setGestureWaitTime(time: int) None#

Hareket tespitleri arasındaki düşük güçlü bekleme süresini ayarlar.

getGestureMode() bool#

Hareket durum makinesi şu anda çalışıyorsa True döndürür.

setGestureMode(enable: bool) None#

Hareket durum makinesine girer veya çıkar.

Ortam ışığı kesmesi eşikleri#

getLightIntLowThreshold() int#

Ortam ışığı kesmesi için kullanılan 16 bitlik düşük eşiği döndürür.

setLightIntLowThreshold(threshold: int) None#

Ortam ışığı kesmesi için kullanılan 16 bitlik düşük eşiği ayarlar.

getLightIntHighThreshold() int#

Ortam ışığı kesmesi için kullanılan 16 bitlik yüksek eşiği döndürür.

setLightIntHighThreshold(threshold: int) None#

Ortam ışığı kesmesi için kullanılan 16 bitlik yüksek eşiği ayarlar.

Kesme etkinleştirmeleri ve temizlemeleri#

getAmbientLightIntEnable() bool#

Ortam ışığı kesmeleri etkinse True döndürür.

setAmbientLightIntEnable(enable: bool) None#

Ortam ışığı kesmelerini etkinleştirir veya devre dışı bırakır.

getProximityIntEnable() bool#

Yakınlık kesmeleri etkinse True döndürür.

setProximityIntEnable(enable: bool) None#

Yakınlık kesmelerini etkinleştirir veya devre dışı bırakır.

getGestureIntEnable() bool#

Hareket kesmeleri etkinse True döndürür.

setGestureIntEnable(enable: bool) None#

Hareket kesmelerini etkinleştirir veya devre dışı bırakır.

clearAmbientLightInt() None#

Bekleyen bir ortam ışığı kesmesini temizler.

clearProximityInt() None#

Bekleyen bir yakınlık kesmesini temizler.

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

APDS9960 sınıfının MicroPython alt sınıfı. Genel API’si aynıdır, ancak alttaki yazmaç erişimi SMBus tarzı yöntemler yerine machine.I2C tarzı readfrom_mem ve writeto_mem çağrılarını kullanır. OpenMV / MicroPython hedeflerinde kullanılacak sınıf budur.

İstisnalar#

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

ValueError alt sınıfı. Çipin ID yazmacından okunan değer valid_id listesinde bulunmadığında APDS9960 yapıcısı tarafından yükseltilir.

exception apds9960.ADPS9960InvalidMode(mode: int)#

ValueError alt sınıfı. mode argümanı APDS9960_MODE_POWER..\ APDS9960_MODE_ALL aralığının dışında olduğunda APDS9960.setMode() tarafından yükseltilir.

Sabitler#

I2C adresi ve aygıt ID’leri#

apds9960.APDS9960_I2C_ADDR: int#

APDS9960’ın varsayılan 7 bitlik I2C adresi (0x39).

apds9960.APDS9960_DEV_ID: list#

Geçerli aygıt ID yazmacı değerlerinin varsayılan listesi ([0xAB, 0x9C, 0xA8, -0x55]).

Hareket ayarlaması#

apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int#

Hareket çözücünün, aralık içindeki ilk/son FIFO örneklerini ararken kullandığı minimum örnek büyüklüğü (fotodiyot başına).

apds9960.APDS9960_GESTURE_SENSITIVITY_1: int#

Çözücünün bir kaydırma yönüne karar verdiği, biriken U/D ve L/R farkları (delta) üzerindeki eşik.

apds9960.APDS9960_GESTURE_SENSITIVITY_2: int#

Çözücünün bir örneği kaydırma yerine yakın/uzak adayı olarak değerlendirdiği, adım başına U/D ve L/R farkları (delta) altındaki eşik.

apds9960.APDS9960_TIME_FIFO_PAUSE: int#

Hareket döngüsünün FIFO boşaltmaları arasında uyuduğu milisaniye.

Özellik modları#

Bu değerler APDS9960.setMode() yöntemine aktarılır.

apds9960.APDS9960_MODE_POWER: int#

Güç açma biti (0).

apds9960.APDS9960_MODE_AMBIENT_LIGHT: int#

Ortam ışığı/renk motoru etkinleştirme biti (1).

apds9960.APDS9960_MODE_PROXIMITY: int#

Yakınlık motoru etkinleştirme biti (2).

apds9960.APDS9960_MODE_WAIT: int#

Bekleme durumu etkinleştirme biti (3).

apds9960.APDS9960_MODE_AMBIENT_LIGHT_INT: int#

Ortam ışığı kesmesi etkinleştirme biti (4).

apds9960.APDS9960_MODE_PROXIMITY_INT: int#

Yakınlık kesmesi etkinleştirme biti (5).

apds9960.APDS9960_MODE_GESTURE: int#

Hareket motoru etkinleştirme biti (6).

apds9960.APDS9960_MODE_ALL: int#

APDS9960.setMode() yöntemine ENABLE yazmacındaki her biti aynı anda etkinleştirmesini veya devre dışı bırakmasını söyleyen nöbetçi (sentinel) değer (7).

LED sürüş akımları#

apds9960.APDS9960_LED_DRIVE_100MA: int#

100 mA LED sürüş akımı (0).

apds9960.APDS9960_LED_DRIVE_50MA: int#

50 mA LED sürüş akımı (1).

apds9960.APDS9960_LED_DRIVE_25MA: int#

25 mA LED sürüş akımı (2).

apds9960.APDS9960_LED_DRIVE_12_5MA: int#

12.5 mA LED sürüş akımı (3).

Yakınlık kazancı (PGAIN)#

apds9960.APDS9960_PGAIN_1X: int#

1x yakınlık kazancı (0).

apds9960.APDS9960_PGAIN_2X: int#

2x yakınlık kazancı (1).

apds9960.APDS9960_PGAIN_4X: int#

4x yakınlık kazancı (2). Yapıcı tarafından uygulanan varsayılan.

apds9960.APDS9960_PGAIN_8X: int#

8x yakınlık kazancı (3).

Ortam ışığı kazancı (AGAIN)#

apds9960.APDS9960_AGAIN_1X: int#

1x ALS kazancı (0).

apds9960.APDS9960_AGAIN_4X: int#

4x ALS kazancı (1). Yapıcı tarafından uygulanan varsayılan.

apds9960.APDS9960_AGAIN_16X: int#

16x ALS kazancı (2).

apds9960.APDS9960_AGAIN_64X: int#

64x ALS kazancı (3).

Hareket kazancı (GGAIN)#

apds9960.APDS9960_GGAIN_1X: int#

1x hareket kazancı (0).

apds9960.APDS9960_GGAIN_2X: int#

2x hareket kazancı (1).

apds9960.APDS9960_GGAIN_4X: int#

4x hareket kazancı (2). Yapıcı tarafından uygulanan varsayılan.

apds9960.APDS9960_GGAIN_8X: int#

8x hareket kazancı (3).

LED güçlendirme#

apds9960.APDS9960_LED_BOOST_100: int#

%100 LED güçlendirme (0).

apds9960.APDS9960_LED_BOOST_150: int#

%150 LED güçlendirme (1).

apds9960.APDS9960_LED_BOOST_200: int#

%200 LED güçlendirme (2).

apds9960.APDS9960_LED_BOOST_300: int#

%300 LED güçlendirme (3). APDS9960.enableGestureSensor() tarafından otomatik olarak uygulanır.

Hareket bekleme süreleri#

apds9960.APDS9960_GWTIME_0MS: int#

0 ms (0).

apds9960.APDS9960_GWTIME_2_8MS: int#

2.8 ms (1). Yapıcı tarafından uygulanan varsayılan.

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

Hareket yönleri#

Bu değerler APDS9960.readGesture() tarafından döndürülür.

apds9960.APDS9960_DIR_NONE: int#

Hareket tespit edilmedi (0).

apds9960.APDS9960_DIR_LEFT: int#

Sola kaydırma (1).

apds9960.APDS9960_DIR_RIGHT: int#

Sağa kaydırma (2).

apds9960.APDS9960_DIR_UP: int#

Yukarı kaydırma (3).

apds9960.APDS9960_DIR_DOWN: int#

Aşağı kaydırma (4).

apds9960.APDS9960_DIR_NEAR: int#

Yakın olayı (5).

apds9960.APDS9960_DIR_FAR: int#

Uzak olayı (6).

apds9960.APDS9960_DIR_ALL: int#

Dahili olarak “herhangi bir yön”ü temsil etmek için kullanılan nöbetçi (sentinel) değer (7).

Hareket durumları#

Hareket durum makinesi aracılığıyla raporlanan dahili durum değerleri.

apds9960.APDS9960_STATE_NA: int#

Durum yok (0).

apds9960.APDS9960_STATE_NEAR: int#

Yakın durumu tespit edildi (1).

apds9960.APDS9960_STATE_FAR: int#

Uzak durumu tespit edildi (2).

apds9960.APDS9960_STATE_ALL: int#

Dahili olarak “herhangi bir durum”u temsil etmek için kullanılan nöbetçi (sentinel) değer (3).