【Raspberry Pi Pico】OLEDディスプレイ(I2C)に文字を描画する方法【MicroPython】

【Raspberry Pi Pico】OLEDディスプレイ(I2C)を使う方法【MicroPython】

こんにちは! けい(Twitter)です。

今回は、Raspberry Pi PicoでMicroPythonを用いて、OLEDディスプレイに文字を描画する方法についてまとめていきたいと思います。

MicroPythonの開発環境はThonnyで行うので、まだの方は以前の記事を参考にしてみて下さい。

必要なもの

ラズピコ

oledディスプレイ

こちらの商品のI2Cバージョンを使用します。
通信方式にSPIとI2Cがあり、I2Cの方が線が少なく便利なのでI2Cがおすすめです。

その他

created by Rinker
Sintron
¥343 (2023/05/26 13:50:35時点 Amazon調べ-詳細)

回路図

ラズピコと4本の線を繋ぐだけです。

ライブラリのダウンロード

MicroPython用のOLEDディスプレイを使うためのライブラリが公開されているので、そちらをダウンロードして使用します。

Thonny IDEを開きます。

「ツール」から、「Manage pachages…」を開きます。

検索窓に「ssd1306」と入力しEnterを押します。

そうするとこのようにいくつかのライブラリを選択できます。
「micropython-ssd1306」をクリックします。

「インストール」をクリックして、ラズピコにインストールします。

これでライブラリのダウンロードは完了です。

I2Cアドレスを確認

それではThonny IDEでI2C接続の確認を行いましょう。

import machine
sda=machine.Pin(0)
scl=machine.Pin(1)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
print(i2c.scan())

このプログラムを実行するとこのような結果が出力されます。

[60]

I2Cアドレスが60ということが分かりました。

10進数で60なので、16進数では0x3cという表記になります。

※もしこのアドレスが違う場合はライブラリのアドレスを変える必要があります。

メインプログラム

それでは改めて、OLEDディスプレイに文字を表示させるプログラムを書いていきましょう。

import machine
import ssd1306
import time

sda = machine.Pin(0)
scl = machine.Pin(1)
i2c = machine.I2C(0,sda=sda, scl=scl, freq=400000)

oled = ssd1306.SSD1306_I2C(128, 64, i2c)

oled.text("Hello everyone", 0, 5)
oled.show()
time.sleep(2)
oled.text("Welcome to my", 0, 15)
oled.text("blog", 10, 25)
oled.show()
time.sleep(2)
oled.text("Thank You", 0, 35)
oled.show()

プログラム解説

2行目

2行目でライブラリのインポートを行っています。

9行目

ssd1306.pyの中のSSD1306_I2Cクラスのインスタンスを生成しています。

引数として128と64はOLEDの解像度を表しています。
なので、違うOLEDディスプレイにも対応していて、128×32などの細長いものもあります。

oled.text(文字,列,行)

oled.textに引数として文字列を渡します。

2番目の引数にどの列からスタートするか、3番目の引数にどの行からスタートするかを指定できます。

oled.show()

このプログラムで実際にOLEDディスプレイに出力されます。

実行結果