皆さんこんにちはItaです。今回は、OLED(有機EL)ディスプレイを使っていきたいと思います。
1. はじめに
OLEDディスプレイとは?
OLED(有機EL)ディスプレイは、薄くて軽量で、バックライト不要の高コントラストな表示ができるディスプレイです。小型で省電力なため、電子工作や組み込み機器に多く使われています。今回はRaspberry Pi Picoと接続して、文字や簡単なグラフィックを表示させてみます。
2. 実際にやってみた
Raspberry Pi PicoにOLEDディスプレイをI2C接続し、MicroPythonを使って表示させました。文字を複数行表示させたり、スクロール表示、グラフィック描画などの機能を試しました。

3. 使用部品
- Raspberry Pi Pico
- OLEDディスプレイ
- ジャンパーワイヤー
- ブレッドボード
OLEDディスプレイのピン表記は「VDD」「GND」「SCK」「SDA」などのことがありますが、一般的に次のように接続します:
OLED端子 | Raspberry Pi Picoピン | 説明 |
---|---|---|
VDD | 3.3V | 電源 |
GND | GND | グラウンド |
SCK/SCL | GP1 | I2Cクロック線 |
SDA | GP0 | I2Cデータ線 |
4. セットアップ
MicroPythonのインストール
Raspberry Pi PicoにMicroPythonのファームウェアを書き込み、Thonnyを使用して開発を行います。
ライブラリのインストール
Thonnyの「パッケージマネージャー」で
ライブラリを検索してインストールします。もし見つからない場合は、MicroPythonのGitHubリポジトリからssd1306
ssd1306.py
をダウンロードしてPicoにアップロードしてください。
5. コード
コードは以下のものです。コピーしてやってみてください。
from machine import Pin, I2C
import ssd1306
# I2C初期化(GP0=SDA, GP1=SCL)
i2c = I2C(0, scl=Pin(1), sda=Pin(0))
# ディスプレイ初期化(128x64の場合)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# 表示テスト
oled.fill(0)
oled.text("Hello, Ita-log!", 0, 0)
oled.show()
Pin番号とI2C0かI2C1の間違えに気を付けてください。以下を参考にされるとよいかと思います。

6. 発展したコード例
以下は、発展形のコードです。面白そうと思ったらぜひやってみてください。
以下のコードを、先ほどのコードの”#表示テスト”の部分に書き換えてやってみてください。
複数行表示
複数の行に文字を表示する例です。oled.text()
で縦位置をずらすことで、1行ずつ違う位置に表示できます。ディスプレイの高さ(64ピクセル)を8ピクセルずつ区切ることで、8行分のテキストがきれいに表示されます。
oled.fill(0)
for i in range(8):
oled.text(f"Line {i+1}", 0, i * 8)
oled.show()
スクロール表示
文字を横にスクロールさせることで、長い文章も動きのある表示にできます。テキストを画面の右端から左に向かって少しずつずらして表示しています。x を変化させて位置を動かしています。
import time
text = "This is a scrolling text demo!"
while True:
for x in range(128, -len(text)*8, -1):
oled.fill(0)
oled.text(text, x, 28)
oled.show()
time.sleep(0.05)
グラフィック描画
線や四角形など、簡単な図形を表示することもできます。中央に水平線を引き、外枠に長方形を描き、さらに文字を真ん中に配置しています。UIのような表示にも応用できます。
oled.fill(0)
oled.line(0, 32, 127, 32, 1)
oled.rect(0, 0, 128, 64, 1)
oled.text("Centered", 30, 28)
oled.show()
7. まとめ
OLEDディスプレイは、Raspberry Pi Picoと組み合わせることで簡単に情報表示ができ、センサー値の可視化やメニュー表示、ミニゲームなど応用が広がります。MicroPythonとssd1306
ライブラリを使えば、初めての人でも比較的簡単に扱えるので、ぜひ試してみてください!
コメント