RPi PicoでロータリーエンコーダーとOLED液晶表示の連動

最終更新日

せっかく、ロータリエンコード(I2C)を試したので、同じくI2Cで動く128x32のOLED液晶のssd1306を連動してみる。

それぞれの記事はこれ。

RPi PicoでロータリーエンコーダーとOLED液晶表示の連動

RPi PicoでロータリーエンコーダーとOLED液晶表示の連動

2021.06.13

RPi Pico でロータリーエンコード(I2C) を試す

RPi Pico でロータリーエンコード(I2C) を試す

2021.06.12

I2C 接続

I2C は、同じバス上に複数のデバイスを接続することができる。

試しに、I2Cのテストプログラムでデバイスを検出してみる。

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.usbmodem14123301 run i2c_test.py
[54, 60]

あらかじめ資料でみていたので、正しく検出できたことがわかった。

  • ssd1306 60=0x3C
  • Adafruit I2C QT Rotary Encoder with NeoPixel - STEMMA QT / Qwiic 54=0x36

表示の仕様

ロータリーエンコーダーのドライバは、初期値 0 で時計回りで+ 、 逆統計まわりで - に変化した値を返す。

ということで、Volumeとして棒グラフ的なものを表示してみる。
ローターリーエンコーダの押し込みボタンは、押したら付属のLEDが赤く光るようにする。

program

  • SDA = GP2
  • SCL = GP3

実行

ampy -p /dev/tty.usbmodem14123301 run volume.py

ローターリーエンコードがグルグル回すと、Volume 表示も動く。

シェアする