PRi PicoでOLED液晶 ssd1308 I2Cを使ってみる(micropython編)

目次
前回、Raspberry Pi Pico で、搭載LEDを点灯、消灯してみた。
今度は、MicroPythonドライバを利用してOLED液晶を使ってみる。
使うOLED液晶
M5StickC、つまり Arduino ESP32 で動かしたことあり。
ampy コマンド
Thonny もいいけど、IDEのeditorはやはり好みではない。 ということで、いつものcommand line 環境に移行する。
使うのは、Adafruitが Micropythonや CircuitPython を搭載したシングルボートコンピュータとのserial通信用に提供している ampy
install
macosならpip3 でinstall
bash
$ sudo pip3 install adafruit-ampy使い方
まずは、Pico 上のファイルを確認。最初はなにもない。
bash
$ ampy -p /dev/tty.usbmodem0000000000001 lsscript の実行
手元のeditor でサンプルファイルを作成
led.py
python
from machine import Pin
import time
led = Pin(25, Pin.OUT)
while True:
time.sleep(1.0)
led.value(1)
time.sleep(1.0)
led.value(0)`このファイルを run コマンドで流し込む
bash
$ ampy -p /dev/tty.usbmodem0000000000001 run led.py
^C << 永久loop なのでCTL-C で停止
Aborted!OLED ssd1308 のドライバをput
MicroPython 上で利用するドライバファイルをgithubからもってくる。
ファイル名を ssd1308.py とし、 put でPico上に送る
bash
$ ampy -p /dev/tty.usbmodem0000000000001 put ssd1306.pyls で確認
bash
$ ampy -p /dev/tty.usbmodem0000000000001 ls
/ssd1306.py表示用アプリを実行
アプリは、こんな感じ
PINは、GPIO2(SDA) と GPIO3(SCL) を利用した。
python
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
# i2c = I2C(id=0, sda=Pin(0), scl=Pin(1))
i2c = I2C(id=1, sda=Pin(2), scl=Pin(3))
print(i2c)
oled = SSD1306_I2C(128, 32, i2c)
oled.rect(0, 0, 128, 32, 1)
oled.fill_rect(120, 0, 128, 32, 1)
oled.line(112, 0, 112, 32, 1)
oled.text('MicroPython', 4, 4)
oled.text('ssd1306 demo', 4, 20)
oled.show()実行してみる。
bash
$ ampy -p /dev/tty.usbmodem0000000000001 run ssd1306_app.py
I2C(1, freq=399361, scl=3, sda=2)
