apds9960 --- Driver Cảm biến Khoảng cách, Cử chỉ và Màu sắc¶
Mô-đun này cung cấp driver cho cảm biến kỹ thuật số APDS9960 của Broadcom/Avago, hỗ trợ đo khoảng cách, ánh sáng môi trường, màu sắc RGB và cử chỉ qua I2C. Driver này cung cấp các điều khiển bật/tắt từng tính năng riêng lẻ, đọc kênh thô (clear, R, G, B, proximity) và máy trạng thái giải mã cử chỉ phần mềm phân loại vuốt lên/xuống/trái/phải và cử chỉ gần/xa từ FIFO 4 photodiode trên chip.
Ví dụ sử dụng:
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)
Lớp¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Tạo một thể hiện driver APDS9960.
buslà một đối tượng bus I2C đã được cấu hình dùng để giao tiếp với cảm biến. Lớp cơ sở thực hiện các lệnh gọi SMBusread_byte_data,write_byte_datavàread_i2c_block_data; đối vớimachine.I2Ccủa MicroPython hãy dùnguAPDS9960thay thế.addresslà địa chỉ I2C 7-bit của thiết bị. Mặc định làAPDS9960_I2C_ADDR(0x39).valid_idlà danh sách các giá trị chấp nhận được trả về bởi thanh ghi ID của chip. Mặc định làAPDS9960_DEV_ID.
Hàm tạo đọc ID thiết bị và gây ra
ADPS9960InvalidDevIdnếu ID không nằm trongvalid_id. Sau đó nó vô hiệu hóa mọi tính năng, lập trình các giá trị ATIME/WTIME/PPULSE mặc định, và áp dụng cấu hình mặc định về LED drive, proximity gain, ALS gain, ngưỡng proximity, ngưỡng ánh sáng môi trường, persistence và cấu hình gesture engine (ngưỡng vào/ra, GCONF1, gesture gain, gesture LED drive, gesture wait time, gesture offsets, GPULSE, GCONF3, và bật ngắt gesture).Điều khiển chế độ và nguồn điện¶
- getMode() int¶
Trả về giá trị thô của thanh ghi ENABLE, mã hóa các tính năng hiện đang được bật (nguồn, ALS, proximity, wait, ngắt ALS, ngắt proximity, gesture).
- setMode(mode: int, enable: bool = True) None¶
Bật hoặc tắt một tính năng riêng lẻ trong thanh ghi ENABLE.
modephải là một trong các giá trịAPDS9960_MODE_*(APDS9960_MODE_POWER..\APDS9960_MODE_ALL). KhimodelàAPDS9960_MODE_ALL, tất cả các bit được bật hoặc tắt cùng một lúc. Gây raADPS9960InvalidModecho các giá trị ngoài phạm vi.
Cảm biến ánh sáng môi trường / RGB¶
Cảm biến khoảng cách¶
Engine cử chỉ¶
- enableGestureSensor(interrupts: bool = True) None¶
Đặt lại trạng thái cử chỉ, đặt WTIME và số xung gesture, tăng LED lên 300%, cấu hình bit bật ngắt gesture, vào máy trạng thái gesture, bật nguồn thiết bị và bật các chế độ wait, proximity và gesture.
- disableGestureSensor() None¶
Đặt lại trạng thái cử chỉ, vô hiệu hóa ngắt gesture và máy trạng thái, và dừng engine gesture.
- isGestureAvailable() bool¶
Trả về
Truenếu bit GVALID của thanh ghi trạng thái gesture được đặt, biểu thị rằng dữ liệu FIFO gesture đã sẵn sàng để đọc.
- readGesture() int¶
Xả FIFO gesture, chạy bộ giải mã gesture trên bo mạch và trả về một trong các hằng số hướng
APDS9960_DIR_*. Trả vềAPDS9960_DIR_NONEnếu engine không chạy, không có dữ liệu hợp lệ, hoặc dữ liệu không phân giải thành cử chỉ được nhận dạng.
- resetGestureParameters() None¶
Xóa bộ đệm FIFO gesture nội bộ, các delta, số đếm, bộ đếm gần/xa, trạng thái và chuyển động được giải mã lần cuối.
Ngưỡng proximity¶
- getProximityIntLowThreshold() int¶
Bí danh cho
getProxIntLowThresh().
- setProximityIntLowThreshold(threshold: int) None¶
Bí danh cho
setProxIntLowThresh().
- getProximityIntHighThreshold() int¶
Bí danh cho
getProxIntHighThresh().
- setProximityIntHighThreshold(threshold: int) None¶
Bí danh cho
setProxIntHighThresh().
LED drive, gain và boost¶
- getLEDDrive() int¶
Trả về cường độ LED drive dùng cho proximity và ALS. Được mã hóa là một trong các giá trị
APDS9960_LED_DRIVE_*(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA).
- setLEDDrive(drive: int) None¶
Đặt cường độ LED drive dùng cho proximity và ALS.
drivelà một trong các giá trịAPDS9960_LED_DRIVE_*.
- getProximityGain() int¶
Trả về độ khuếch đại bộ thu proximity. Được mã hóa là một trong các giá trị
APDS9960_PGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- setProximityGain(drive: int) None¶
Đặt độ khuếch đại bộ thu proximity.
drivelà một trong các giá trịAPDS9960_PGAIN_*.
- getAmbientLightGain() int¶
Trả về độ khuếch đại cảm biến ánh sáng môi trường. Được mã hóa là một trong các giá trị
APDS9960_AGAIN_*(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x).
- setAmbientLightGain(drive: int) None¶
Đặt độ khuếch đại cảm biến ánh sáng môi trường.
drivelà một trong các giá trịAPDS9960_AGAIN_*.
Bù gain proximity và mặt nạ photodiode¶
Cấu hình cử chỉ¶
- setGestureExitThresh(threshold: int) None¶
Đặt ngưỡng proximity cần thiết để thoát khỏi chế độ gesture.
- getGestureGain() int¶
Trả về độ khuếch đại photodiode được sử dụng trong chế độ gesture. Được mã hóa là một trong các giá trị
APDS9960_GGAIN_*(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x).
- getGestureLEDDrive() int¶
Trả về dòng LED drive được sử dụng trong chế độ gesture. Được mã hóa là một trong các giá trị
APDS9960_LED_DRIVE_*.
- getGestureWaitTime() int¶
Trả về thời gian chờ tiết kiệm năng lượng giữa các lần phát hiện gesture. Được mã hóa là một trong các giá trị
APDS9960_GWTIME_*(0 = 0 ms .. 7 = 39.2 ms).
Ngưỡng ngắt ánh sáng môi trường¶
Bật ngắt và xóa ngắt¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
Lớp con MicroPython của
APDS9960. API công khai giống hệt, nhưng việc truy cập thanh ghi bên dưới sử dụng các lệnh gọireadfrom_memvàwriteto_memtheo kiểumachine.I2Cthay vì các phương thức theo kiểu SMBus. Đây là lớp để sử dụng trên các thiết bị OpenMV / MicroPython.
Ngoại lệ¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
Lớp con của
ValueError. Được gây ra bởi hàm tạoAPDS9960khi giá trị đọc từ thanh ghi ID của chip không có trong danh sáchvalid_id.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
Lớp con của
ValueError. Được gây ra bởiAPDS9960.setMode()khi đối sốmodenằm ngoài phạm viAPDS9960_MODE_POWER..\APDS9960_MODE_ALL.
Hằng số¶
Địa chỉ I2C và ID thiết bị¶
Tinh chỉnh cử chỉ¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
Độ lớn mẫu tối thiểu (mỗi photodiode) được bộ giải mã gesture sử dụng khi tìm kiếm các mẫu FIFO đầu tiên/cuối cùng trong phạm vi.
- apds9960.APDS9960_GESTURE_SENSITIVITY_1: int¶
Ngưỡng trên các delta U/D và L/R tích lũy mà tại đó bộ giải mã xác định hướng vuốt.
Các chế độ tính năng¶
Các giá trị này được truyền cho APDS9960.setMode().
- apds9960.APDS9960_MODE_ALL: int¶
Giá trị sentinel (
7) yêu cầuAPDS9960.setMode()bật hoặc tắt tất cả các bit trong thanh ghi ENABLE cùng một lúc.
Dòng LED drive¶
Proximity gain (PGAIN)¶
Ambient-light gain (AGAIN)¶
Gesture gain (GGAIN)¶
LED boost¶
- apds9960.APDS9960_LED_BOOST_300: int¶
LED boost 300% (
3). Được áp dụng tự động bởiAPDS9960.enableGestureSensor().
Thời gian chờ gesture¶
Hướng cử chỉ¶
Các giá trị này được trả về bởi APDS9960.readGesture().
Trạng thái cử chỉ¶
Các giá trị trạng thái nội bộ được báo cáo qua máy trạng thái gesture.