目次
1.前回のまとめ
2.有機ELディスプレイ
3.Raspberry Pi Pico WとI2C通信する
4.コーディング
5.まとめ
1.前回のまとめ
houwouです。
前回の投稿でRaspberry Pi Pico Wと気圧センサMPL115A2、温湿度センサDHT20のI2C通信が無事に成功しました。
今回は有機ELディスプレイで遊んでみようと思います。
2.有機ELディスプレイ
有機ELディスプレイは0.96インチ 128×64ドット有機EL(OLED)白色を使用します。
仕様は秋月電子通商さんが掲載している取扱説明書で確認。
裏面のチップ抵抗R11をR12に付け替えることでスレーブアドレスが0x78から0x7Aに設定変更できるらしい。
3.Raspberry Pi Pico WとI2C通信する
Raspberry Pi Pico Wのピンアサインを公式サイトで確認する。
今回もSDAはGP12、SCLはGP13を使用してI2C0で接続する。
次は有機ELディスプレイのピンアサインを確認、と思ったらSSD1306の取扱説明書には詳細なことが書いてありすぎて解読不可能。
でも親切なことに基盤にピンアサインが書いてあった。
VDDには3.3Vを供給、GNDはそのまま接地、SDAとSCLはそれぞれRaspberry Pi Pico WのSDAとSCL(今回はGP12とGP13)に接続。(DHT20と一緒)
これまで接続していた気圧センサMPL115A2と温湿度センサDHT20も同時にI2C接続したのがこちら。
念のため今回もスレーブアドレスを確認。
from machine import Pin, I2C
i2c = I2C(0, sda=Pin(12), scl=Pin(13), freq=100000)
print(i2c.scan())
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot
[56, 60, 96]
>>>
60の0x3Cが仲間になった。
あれ?0x78じゃないのか?
取扱説明書を見れば解決した。
言われてみれば単純なことだった。
0x3Cは0011 1110で0x78は0111 1100。
0011 1110を左シフトすると0111 1100と一致する。
一桁目は読み書きのモード切替に使用するらしい。
ということで無事に接続成功!
4.コーディング
SSD1306はライブラリが豊富という噂通り、Thonnyの「パッケージを管理」でPyPIのMicropythonライブラリを検索すると1件ヒットしたのでそれをインストール。
無事にインストールできたので、先人の知恵を借りながらコーディングしていく。(ライブラリ内のコードは割愛)
参考:ラズパイPicoでSSD1306有機ELディスプレイの使い方 MicroPython編
from machine import Pin, I2C
import ssd1306
i2c = I2C(0, sda=Pin(12), scl=Pin(13))
display = ssd1306.SSD1306_I2C(128, 64, i2c)
while True:
display.fill(0)
display.text('SSD1306 TEST', 5, 2, True)
display.text('TEMP: 27.5C', 5, 18, True)
display.text('HUMI: 66.6%', 5, 34, True)
display.text('PRES: 1023.1hPa', 5, 50, True)
display.show()
5.まとめ
これで一通りのペリフェラルを接続することに成功した。
次回は少し実用性を考えた温湿度気圧計を設計してみる。