apds9960 --- 近接・ジェスチャー・カラーセンサードライバー¶
このモジュールは、Broadcom/Avago APDS9960 デジタル近接・周囲光・RGB カラー・ジェスチャーセンサーを I2C 経由で扱うドライバーを提供します。ドライバーは、機能ごとの有効化/無効化制御、生のチャンネル読み取り(クリア、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% にブーストし、ジェスチャー割り込み有効化ビットを設定し、ジェスチャーステートマシンに入り、デバイスの電源をオンにして、待機・近接・ジェスチャーモードを有効化します。
- isGestureAvailable() bool¶
ジェスチャーステータスレジスタの GVALID ビットがセットされている場合は
Trueを返します。これはジェスチャー FIFO データの読み取り準備ができていることを示します。
- 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.APDS9960_GESTURE_SENSITIVITY_1: int¶
累積された U/D および L/R デルタに対するしきい値で、これを超えるとデコーダーはスワイプ方向を確定します。
機能モード¶
これらの値は 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() によって返されます。
ジェスチャー状態¶
ジェスチャーステートマシンを介して報告される内部状態値。