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