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_dataveread_i2c_block_dataçağrıları yapar; MicroPython’ınmachine.I2Csınıfı için bunun yerineuAPDS9960kullanın.address, aygıtın 7 bitlik I2C adresidir. Varsayılan olarakAPDS9960_I2C_ADDR(0x39) değerine sahiptir.valid_id, çipin ID yazmacının döndürdüğü kabul edilebilir değerlerin bir listesidir. Varsayılan olarakAPDS9960_DEV_IDdeğerine sahiptir.
Yapıcı, aygıt ID’sini okur ve değer
valid_idiçinde yoksaADPS9960InvalidDevIdyü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).modeAPDS9960_MODE_ALLolduğunda, tüm bitler aynı anda açılır veya kapatılır. Aralık dışı değerler içinADPS9960InvalidModeyükseltir.
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.
Yakınlık sensörü¶
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
Truedö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ümlenmediyseAPDS9960_DIR_NONEdö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.
Yakınlık eşikleri¶
- 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.
Yakınlık kazanç telafisi ve fotodiyot maskesi¶
- setProxGainCompEnable(enable: bool) None¶
Yakınlık kazanç telafisini etkinleştirir veya devre dışı bırakır.
Hareket yapılandırması¶
- setGestureEnterThresh(threshold: int) None¶
Hareket moduna girmek için gereken yakınlık eşiğini ayarlar.
- 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).
- 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.
- 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).
Ortam ışığı kesmesi eşikleri¶
- setLightIntLowThreshold(threshold: int) None¶
Ortam ışığı kesmesi için kullanılan 16 bitlik düşük eşiği ayarlar.
Kesme etkinleştirmeleri ve temizlemeleri¶
- setAmbientLightIntEnable(enable: bool) None¶
Ortam ışığı kesmelerini etkinleştirir veya devre dışı bırakır.
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
APDS9960sınıfının MicroPython alt sınıfı. Genel API’si aynıdır, ancak alttaki yazmaç erişimi SMBus tarzı yöntemler yerinemachine.I2Ctarzıreadfrom_memvewriteto_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)¶
ValueErroralt sınıfı. Çipin ID yazmacından okunan değervalid_idlistesinde bulunmadığındaAPDS9960yapıcısı tarafından yükseltilir.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
ValueErroralt sınıfı.modeargümanıAPDS9960_MODE_POWER..\APDS9960_MODE_ALLaralığının dışında olduğundaAPDS9960.setMode()tarafından yükseltilir.
Sabitler¶
I2C adresi ve aygıt ID’leri¶
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.
Özellik modları¶
Bu değerler APDS9960.setMode() yöntemine aktarılır.
- 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ı¶
Yakınlık kazancı (PGAIN)¶
Ortam ışığı kazancı (AGAIN)¶
Hareket kazancı (GGAIN)¶
LED güçlendirme¶
- apds9960.APDS9960_LED_BOOST_300: int¶
%300 LED güçlendirme (
3).APDS9960.enableGestureSensor()tarafından otomatik olarak uygulanır.
Hareket bekleme süreleri¶
Hareket yönleri¶
Bu değerler APDS9960.readGesture() tarafından döndürülür.
Hareket durumları¶
Hareket durum makinesi aracılığıyla raporlanan dahili durum değerleri.