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

最終更新日

前回、Raspberry Pi Pico で、搭載LEDを点灯、消灯してみた。

Raspberry Pi Pico が来た

2021.04.14

今度は、MicroPythonドライバを利用してOLED液晶を使ってみる。

使うOLED液晶

M5StickC、つまり Arduino ESP32 で動かしたことあり。

I2CのOLED液晶 SSD1306 を使ってみる

2020.12.06

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)

シェアする