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の色が変わる。

シェアする