apds9960 — 근접, 제스처 및 색상 센서 드라이버¶
이 모듈은 I2C를 통해 Broadcom/Avago APDS9960 디지털 근접, 주변광, RGB 색상 및 제스처 센서를 위한 드라이버를 제공합니다. 이 드라이버는 기능별 활성화/비활성화 제어, 원시 채널 읽기(클리어, R, G, B, 근접), 그리고 온칩 4-포토다이오드 FIFO에서 상/하/좌/우 스와이프 및 근접/원거리 제스처를 분류하는 소프트웨어 제스처 디코딩 상태 머신을 노출합니다.
사용 예제:
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)
클래스¶
- class apds9960.APDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
APDS9960 드라이버 인스턴스를 생성합니다.
bus는 센서와 통신하는 데 사용되는 구성된 I2C 버스 객체입니다. 기본 클래스는 SMBus 스타일의read_byte_data,write_byte_data,read_i2c_block_data호출을 발행합니다. MicroPython의machine.I2C를 사용하려면 대신uAPDS9960을 사용하십시오.address는 디바이스의 7비트 I2C 주소입니다. 기본값은APDS9960_I2C_ADDR(0x39)입니다.valid_id는 칩의 ID 레지스터가 반환하는 허용 가능한 값의 목록입니다. 기본값은APDS9960_DEV_ID입니다.
생성자는 디바이스 ID를 읽고, 그것이
valid_id에 없으면ADPS9960InvalidDevId를 발생시킵니다. 그런 다음 모든 기능을 비활성화하고, 기본 ATIME/WTIME/PPULSE 값을 프로그래밍하며, 기본 LED 드라이브, 근접 게인, ALS 게인, 근접 임계값, 주변광 임계값, 지속성, 그리고 제스처 엔진 구성(진입/이탈 임계값, GCONF1, 제스처 게인, 제스처 LED 드라이브, 제스처 대기 시간, 제스처 오프셋, GPULSE, GCONF3, 제스처 인터럽트 활성화)을 적용합니다.모드 및 전원 제어¶
- getMode() int¶
ENABLE 레지스터의 원시 값을 반환하며, 현재 어떤 기능(전원, ALS, 근접, 대기, ALS 인터럽트, 근접 인터럽트, 제스처)이 활성화되어 있는지를 인코딩합니다.
- setMode(mode: int, enable: bool = True) None¶
ENABLE 레지스터에서 개별 기능을 활성화하거나 비활성화합니다.
mode는APDS9960_MODE_*값(APDS9960_MODE_POWER..\APDS9960_MODE_ALL) 중 하나여야 합니다.mode가APDS9960_MODE_ALL인 경우 모든 비트가 한 번에 켜지거나 꺼집니다. 범위를 벗어난 값에 대해서는ADPS9960InvalidMode를 발생시킵니다.
주변광 / RGB 센서¶
근접 센서¶
제스처 엔진¶
- enableGestureSensor(interrupts: bool = True) None¶
제스처 상태를 재설정하고, WTIME과 제스처 펄스 카운트를 설정하며, LED를 300%로 부스트하고, 제스처 인터럽트 활성화 비트를 구성하며, 제스처 상태 머신에 진입하고, 디바이스 전원을 켜고, 대기, 근접 및 제스처 모드를 활성화합니다.
- readGesture() int¶
제스처 FIFO를 비우고, 온보드 제스처 디코더를 실행하며,
APDS9960_DIR_*방향 상수 중 하나를 반환합니다. 엔진이 실행 중이 아니거나, 유효한 데이터가 없거나, 데이터가 인식된 제스처로 해석되지 않은 경우APDS9960_DIR_NONE을 반환합니다.
근접 임계값¶
- getProximityIntLowThreshold() int¶
getProxIntLowThresh()의 별칭입니다.
- setProximityIntLowThreshold(threshold: int) None¶
setProxIntLowThresh()의 별칭입니다.
- getProximityIntHighThreshold() int¶
getProxIntHighThresh()의 별칭입니다.
- setProximityIntHighThreshold(threshold: int) None¶
setProxIntHighThresh()의 별칭입니다.
LED 드라이브, 게인 및 부스트¶
- getLEDDrive() int¶
근접 및 ALS에 사용되는 LED 드라이브 강도를 반환합니다.
APDS9960_LED_DRIVE_*값(0 = 100 mA, 1 = 50 mA, 2 = 25 mA, 3 = 12.5 mA) 중 하나로 인코딩됩니다.
- setLEDDrive(drive: int) None¶
근접 및 ALS에 사용되는 LED 드라이브 강도를 설정합니다.
drive는APDS9960_LED_DRIVE_*값 중 하나입니다.
- getProximityGain() int¶
근접 수신기 게인을 반환합니다.
APDS9960_PGAIN_*값(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x) 중 하나로 인코딩됩니다.
- getAmbientLightGain() int¶
주변광 센서 게인을 반환합니다.
APDS9960_AGAIN_*값(0 = 1x, 1 = 4x, 2 = 16x, 3 = 64x) 중 하나로 인코딩됩니다.
근접 게인 보정 및 포토다이오드 마스크¶
제스처 구성¶
- getGestureGain() int¶
제스처 모드 동안 사용되는 포토다이오드 게인을 반환합니다.
APDS9960_GGAIN_*값(0 = 1x, 1 = 2x, 2 = 4x, 3 = 8x) 중 하나로 인코딩됩니다.
주변광 인터럽트 임계값¶
인터럽트 활성화 및 클리어¶
- class apds9960.uAPDS9960(bus: machine.I2C, address: int = 0x39, valid_id: list = [0xAB, 0x9C, 0xA8, -0x55])¶
APDS9960의 MicroPython 서브클래스입니다. 동일한 공개 API를 가지지만, 내부 레지스터 접근은 SMBus 스타일 메서드 대신machine.I2C스타일의readfrom_mem및writeto_mem호출을 사용합니다. OpenMV / MicroPython 타겟에서 사용해야 하는 클래스입니다.
예외¶
- exception apds9960.ADPS9960InvalidDevId(id: int, valid_ids: list)¶
ValueError의 서브클래스입니다. 칩의 ID 레지스터에서 읽은 값이valid_id목록에 없을 때APDS9960생성자에 의해 발생합니다.
- exception apds9960.ADPS9960InvalidMode(mode: int)¶
ValueError의 서브클래스입니다.mode인수가APDS9960_MODE_POWER..\APDS9960_MODE_ALL범위를 벗어났을 때APDS9960.setMode()에 의해 발생합니다.
상수¶
I2C 주소 및 디바이스 ID¶
제스처 튜닝¶
- apds9960.APDS9960_GESTURE_THRESHOLD_OUT: int¶
제스처 디코더가 범위 내의 첫 번째/마지막 FIFO 샘플을 검색할 때 사용하는 최소 샘플 크기(포토다이오드별)입니다.
기능 모드¶
이 값들은 APDS9960.setMode()에 전달됩니다.
- apds9960.APDS9960_MODE_ALL: int¶
APDS9960.setMode()에게 ENABLE 레지스터의 모든 비트를 한 번에 활성화하거나 비활성화하도록 지시하는 센티넬 값(7)입니다.
LED 드라이브 전류¶
근접 게인(PGAIN)¶
주변광 게인(AGAIN)¶
제스처 게인(GGAIN)¶
LED 부스트¶
- apds9960.APDS9960_LED_BOOST_300: int¶
300% LED 부스트(
3)입니다.APDS9960.enableGestureSensor()에 의해 자동으로 적용됩니다.
제스처 대기 시간¶
제스처 방향¶
이 값들은 APDS9960.readGesture()에 의해 반환됩니다.
제스처 상태¶
제스처 상태 머신을 통해 보고되는 내부 상태 값입니다.