apds9960 --- Driver Sensor Kedekatan, Gerak, dan Warna¶
Modul ini menyediakan driver untuk sensor kedekatan digital, cahaya sekitar, warna RGB, dan gerak Broadcom/Avago APDS9960 melalui I2C. Driver ini mengekspos kontrol aktifkan/nonaktifkan per fitur, pembacaan saluran mentah (clear, R, G, B, kedekatan), dan mesin keadaan dekoding gerak perangkat lunak yang mengklasifikasikan gesekan atas/bawah/kiri/kanan dan gerak dekat/jauh dari FIFO 4-photodiode pada chip.
Contoh penggunaan:
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)
Kelas¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Membuat instance driver APDS9960.
busadalah objek bus I2C yang dikonfigurasi yang digunakan untuk berkomunikasi dengan sensor. Kelas dasar mengeluarkan panggilan SMBus-styleread_byte_data,write_byte_data, danread_i2c_block_data; untukmachine.I2CMicroPython gunakanuAPDS9960sebagai gantinya.addressadalah alamat I2C 7-bit perangkat. Defaultnya adalahAPDS9960_I2C_ADDR(0x39).valid_idadalah daftar nilai yang dapat diterima yang dikembalikan oleh register ID chip. Defaultnya adalahAPDS9960_DEV_ID.
Konstruktor membaca ID perangkat dan memunculkan
ADPS9960InvalidDevIdjika tidak ada dalamvalid_id. Kemudian menonaktifkan setiap fitur, memprogram nilai default ATIME/WTIME/PPULSE, dan menerapkan penggerak LED default, gain kedekatan, gain ALS, ambang batas kedekatan, ambang batas cahaya sekitar, persistensi, dan konfigurasi mesin gerak (ambang masuk/keluar, GCONF1, gain gerak, penggerak LED gerak, waktu tunggu gerak, offset gerak, GPULSE, GCONF3, dan aktifkan interupsi gerak).Kontrol mode dan daya¶
- getMode() int¶
Mengembalikan nilai mentah register ENABLE, yang mengkodekan fitur mana yang saat ini diaktifkan (daya, ALS, kedekatan, tunggu, interupsi ALS, interupsi kedekatan, gerak).
- setMode(mode: int, enable: bool = True) None¶
Mengaktifkan atau menonaktifkan fitur individual dalam register ENABLE.
modeharus salah satu dari nilaiAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). KetikamodeadalahAPDS9960_MODE_ALL, semua bit diaktifkan atau dinonaktifkan sekaligus. MemunculkanADPS9960InvalidModeuntuk nilai di luar rentang.
Sensor cahaya sekitar / RGB¶
Sensor kedekatan¶
Mesin gerak¶
- enableGestureSensor(interrupts: bool = True) None¶
Mereset keadaan gerak, mengatur WTIME dan jumlah pulsa gerak, meningkatkan LED ke 300%, mengonfigurasi bit aktifkan interupsi gerak, memasuki mesin keadaan gerak, menghidupkan perangkat, dan mengaktifkan mode tunggu, kedekatan, dan gerak.
- disableGestureSensor() None¶
Mereset keadaan gerak, menonaktifkan interupsi gerak dan mesin keadaan, serta menghentikan mesin gerak.
- isGestureAvailable() bool¶
Mengembalikan
Truejika bit GVALID dari register status gerak diatur, menunjukkan bahwa data FIFO gerak siap dibaca.
- readGesture() int¶
Menguras FIFO gerak, menjalankan decoder gerak on-board, dan mengembalikan salah satu konstanta arah
APDS9960_DIR_*. MengembalikanAPDS9960_DIR_NONEjika mesin tidak berjalan, tidak ada data valid yang tersedia, atau data tidak terselesaikan menjadi gerak yang dikenali.
- resetGestureParameters() None¶
Menghapus buffer FIFO gerak internal, delta, hitungan, penghitung dekat/jauh, keadaan, dan gerak terakhir yang didekode.
Ambang batas kedekatan¶
- getProximityIntLowThreshold() int¶
Alias untuk
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Alias untuk
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Alias untuk
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Alias untuk
setProxIntHighThresh().
Penggerak LED, gain, dan boost¶
- getLEDDrive() int¶
Mengembalikan kekuatan penggerak LED yang digunakan untuk kedekatan dan ALS. Dikodekan sebagai salah satu dari nilai
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
Mengatur kekuatan penggerak LED yang digunakan untuk kedekatan dan ALS.
driveadalah salah satu dari nilaiAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Mengembalikan gain penerima kedekatan. Dikodekan sebagai salah satu dari nilai
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Mengatur gain penerima kedekatan.
driveadalah salah satu dari nilaiAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Mengembalikan gain sensor cahaya sekitar. Dikodekan sebagai salah satu dari nilai
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Mengatur gain sensor cahaya sekitar.
driveadalah salah satu dari nilaiAPDS9960_AGAIN_*.
Kompensasi gain kedekatan dan masker photodiode¶
- setProxGainCompEnable(enable: bool) None¶
Mengaktifkan atau menonaktifkan kompensasi gain kedekatan.
Konfigurasi gerak¶
- getGestureEnterThresh() int¶
Mengembalikan ambang batas kedekatan yang diperlukan untuk memasuki mode gerak.
- setGestureEnterThresh(threshold: int) None¶
Mengatur ambang batas kedekatan yang diperlukan untuk memasuki mode gerak.
- getGestureExitThresh() int¶
Mengembalikan ambang batas kedekatan yang diperlukan untuk keluar dari mode gerak.
- setGestureExitThresh(threshold: int) None¶
Mengatur ambang batas kedekatan yang diperlukan untuk keluar dari mode gerak.
- getGestureGain() int¶
Mengembalikan gain photodiode yang digunakan selama mode gerak. Dikodekan sebagai salah satu dari nilai
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Mengembalikan arus penggerak LED yang digunakan selama mode gerak. Dikodekan sebagai salah satu dari nilai
APDS9960_LED_DRIVE_*.
Ambang batas interupsi cahaya sekitar¶
- getLightIntLowThreshold() int¶
Mengembalikan ambang batas rendah 16-bit yang digunakan untuk interupsi cahaya sekitar.
- setLightIntLowThreshold(threshold: int) None¶
Mengatur ambang batas rendah 16-bit yang digunakan untuk interupsi cahaya sekitar.
Aktifkan interupsi dan hapus¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Subkelas MicroPython dari
APDS9960. API publik identik, tetapi akses register yang mendasarinya menggunakan panggilanmachine.I2C-stylereadfrom_memdanwriteto_memdaripada metode SMBus-style. Ini adalah kelas yang digunakan pada target OpenMV / MicroPython.
Pengecualian¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Subkelas dari
ValueError. Dimunculkan oleh konstruktorAPDS9960ketika nilai yang dibaca dari register ID chip tidak ada dalam daftarvalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Subkelas dari
ValueError. Dimunculkan olehAPDS9960.setMode()ketika argumenmodeberada di luar rentangAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Konstanta¶
Alamat I2C dan ID perangkat¶
Penyetelan gerak¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Magnitudo sampel minimum (per photodiode) yang digunakan oleh decoder gerak saat mencari sampel FIFO pertama/terakhir dalam rentang.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Ambang batas pada delta U/D dan L/R yang terakumulasi di mana decoder memutuskan arah gesekan.
Mode fitur¶
Nilai-nilai ini diteruskan ke APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
Nilai sentinel (
7) yang memberi tahuAPDS9960.setMode()untuk mengaktifkan atau menonaktifkan setiap bit dalam register ENABLE sekaligus.
Arus penggerak LED¶
Gain kedekatan (PGAIN)¶
Gain cahaya sekitar (AGAIN)¶
Gain gerak (GGAIN)¶
Boost LED¶
- apds9960.APDS9960_LED_BOOST_300: int¶
Boost LED 300% (
3). Diterapkan secara otomatis olehAPDS9960.enableGestureSensor().
Waktu tunggu gerak¶
Arah gerak¶
Nilai-nilai ini dikembalikan oleh APDS9960.readGesture().
Keadaan gerak¶
Nilai keadaan internal yang dilaporkan melalui mesin keadaan gerak.