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
$ sudo pip3 install adafruit-ampy
使い方
まずは、Pico 上のファイルを確認。最初はなにもない。
$ ampy -p /dev/tty.usbmodem0000000000001 ls
script の実行
手元のeditor でサンプルファイルを作成
led.py
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
コマンドで流し込む
$ ampy -p /dev/tty.usbmodem0000000000001 run led.py
^C << 永久loop なのでCTL-C で停止
Aborted!
OLED ssd1308 のドライバをput
MicroPython 上で利用するドライバファイルをgithubからもってくる。
ファイル名を ssd1308.py
とし、 put
でPico上に送る
$ ampy -p /dev/tty.usbmodem0000000000001 put ssd1306.py
ls
で確認
$ ampy -p /dev/tty.usbmodem0000000000001 ls
/ssd1306.py
表示用アプリを実行
アプリは、こんな感じ
PINは、GPIO2(SDA)
と GPIO3(SCL)
を利用した。
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()
実行してみる。
$ ampy -p /dev/tty.usbmodem0000000000001 run ssd1306_app.py
I2C(1, freq=399361, scl=3, sda=2)