RPi Pico でロータリーエンコード(I2C) を試す
買ったのは、これ。
neopixel 対応の RGB LED が1個ついてるところがかわいい。
自分でEC11のロータリーエンコーダーを半田付けする必要がある。
ロータリーエンコーダーのクリックにも対応。
circuitpython driver
driver は、これ。
RGB LED(neopixel) は、I2C で制御。
ロータリーエンコーダーの回転検知はアナログで。
I2C の設定
今回は、GP2=SDA, GP3=SCL で配線。
まずは、接続できているかを確認。
i2c_test.py
from board import *
import busio
import displayio
import adafruit_ssd1306
sda = GP2
scl = GP3
i2c = busio.I2C(scl, sda)
while not i2c.try_lock():
pass
print(i2c.scan())
実行
$ ampy -p /dev/tty.usbmodem14423301 run i2c_test.py
[60]
60=0x36 が、I2Cのアドレスだとわかる。
サンプルプログラムの実行
前述のgithubからexamplesにある seesaw_rotary_neopixel.py
を取得。
I2Cの設定は、以下のように修正する。
# For use with the STEMMA connector on QT Py RP2040
import busio
sda = board.GP2
scl = board.GP3
i2c = busio.I2C(scl, sda)
seesaw = seesaw.Seesaw(i2c, 0x36)
ampy で実行。
$ ampy -p /dev/tty.usbmodem14423301 run seesaw_rotary_neopixel.py
ロータリエンコーダーをクルクル回すと、LEDの色が変わる。