ラズパイPicoのI2Cで、OLEDに文字を表示してみよう
OLEDの説明
ここで使うOLED(有機LED)は、I2Cで制御される128x64ドットのグラフィックディスプレイモジュールです。モジュールではSSD1306と言う制御チップが使われています。
I2Cでは、GND、VCC、SCL、SDAと言う、4本のピンで複数の周辺機器を制御します。このひとつにOLEDを接続して、ディスプレイに文字を表示してみます。
0.96インチ 128×64ドット有機ELディスプレイ(OLED) 白色:
https://akizukidenshi.com/catalog/g/g112031/
準備:OLED の GND、VCC、SCL、SDA を接続
OLEDの左から右に向かって:
GND:-
VCC:+ (3.3V)
SCL:PIN 1
SDA:PIN 0
プログラム
まず、「パッケージを管理」で、ssd1306 をインストールしておきます。
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import random
import time
i2c = I2C(0, scl=Pin(1), sda=Pin(0)) # SCL=1、SDA=0 でI2Cを初期化
oled = SSD1306_I2C(128, 64, i2c) # 幅=128、高さ=64 でSSD1306を初期化
oled.fill(0) # 画面をクリア
oled.text("Hello, World!", 0, 0) # 文字列、X座標、Y座標
oled.rect(10, 20, 20, 40, 1)
oled.line(60, 30, 80, 40, 1)
oled.show() # 画面を更新
time.sleep(3)
for i in range(30):
oled.scroll(-4, 0) # 20 ピクセル左にスクロール
oled.show()
time.sleep(0.1)
oled.fill(0) # 画面をクリア
oled.text("Hello, World!", 0, 0)
oled.text("0123456789", 0, 8*2)
oled.text("ABCDEFGHIJKLMNO", 0, 8*3)
oled.text("PQRSTUVWXYZ", 0, 8*4)
oled.show() # 画面を更新
time.sleep(3)
# ランダムにドットを表示する
while True:
x = random.randint(0, 127) # 0から127までのランダムな数
y = random.randint(0, 63) # 0から63までのランダムな数
oled.pixel(x, y, 1) # 点をかく
oled.show()
time.sleep(0.1)