ラズPicoでディスプレイを使おう

2023年10月13日(金)は、8割ほどの出席率でした。

  • 18時00分~18時25分 タイピング練習
  • 18時25分~19時50分 SSD1306互換OLEDのプログラミング
  • 19時50分~20時00分 あとかたづけ

光都ICTクラブの定例会は、出席自由です。自分の都合に合わせて出席できるときに、出席すればかまいません。参加費も一回ごとに頂戴します。欠席したときのムダが発生しません。必要なときに、必要なだけ、JIT(Just In Time)方式です。←ITパスポートにでます。

タイピング練習

今回のタイピングの練習は、日本語入力です。使う教材は、下のサイトのWebアプリです。

https://manabi.benesse.ne.jp/gakushu/typing/

全体として、すこし伸び悩んできた様子。タイピングはいかに正しく練習したかが上達に直結します。間違った練習は時間のムダです。

SSD1306互換OLEDのプログラミング

この日は、ものづくりチームもゲームプログラミングチームもOLEDのプログラミングに取り組みます。

OLEDは小さなディスプレイです。これが使えると、ものづくりにも幅が出ます。ゲームプログラミングにも、ライブラリの概念を理解するのにちょうどよい教材です。

まずは結線 ラズPicoとディスプレイをI2Cで接続しよう

ラズPicoとOLEDを正しく接続するのが第一歩です。下の写真のように結線します。

たった6本配線するだけなのですが、なれないとなかなか難しいようです。結線図をわたして、お手本を示しているので、よく見てよく見て。

おおむね正しく接続できていました。しかし、この日一番驚いた結線まちがいがありました。電源ピンとGNDピンの短絡です。結線まちがいはよくあるので訂正すれば良いだけですが、電源短絡は別です。ラズPicoかPCが壊れてもおかしくないまちがいです

今回は特に影響なく、結線を修正したらラズPicoが正常に動き出しました。ひょっとするとPCまたはラズPicoに短絡保護があるのかもしれません。これはそのうち調べてみようと思います。

でも、あなたの環境で無事で済む保証はありません。電源短絡は絶対にしないように、電源(USBケーブル)を接続する前に結線の確認を十分してください。

テキストにはない便利な技をクラブで教えます

テキストというか、参考資料は配りますが、そのとおりには進めないのが光都ICTクラブ。テキストが最適解とは限らないので、もっと良い方法を実践します

(ちなみに下で紹介してある「最新Pico W対応!ラズパイPico完全ガイド(福田和宏著)」で紹介してある結線とコードをそのまま真似ても、わたしの環境では動きませんでした。データシートを読む限りでは、誤植ではないかと考えています。もちろん、どうしたら動くかは、検証してクラブで伝えてあります。)

今回もテキストはGitHubからライブラリをコピーしてくる手順になっているところを、クラブではThonnyのパッケージ管理機能を使って進めました。どっちがいいというよりか、場合によって使い分ければ良いと思います。

下のコードで使うのは、「ssd1306」というライブラリです。コードは、「最新Pico W対応!ラズパイPico完全ガイド(福田和宏著)」より、スペースとクォーテーションを変更しています。

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C

WIDTH = 128
HEIGHT = 64

i2c = I2C(0)
i2c.scan()

print('i2c address      : '+hex(i2c.scan()[0]).upper())
print('i2c configuration: '+str(I2C))

oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)
oled.fill(0)

oled.text('Raspberry Pi', 5, 5)
oled.text('Pico', 5, 15)

oled.show()

このコードをそのままコピペしても動きません。「ssd1306」というライブラリをラズPicoにインポートする必要があります。わたしはラズPicoでプログラミングを始めた当初、ライブラリの取得方法がさっぱり理解できなくて、何週間か悩みました。クラブにくれば、悩まずに済みます。

コードの入力で間違いが多かったのは、「,」(カンマ)を「.」(ピリオド)と入力する間違いです。大文字・小文字の間違いより、カンマ・ピリオドの間違いが多かったように感じます。入力を間違えると、動きません! 意味を考えながら入力できると、誤入力は減りますが、これからの課題ですね。

ディスプレイの活用方法はたくさんある

さて、今回のプログラムは「Raspberry Pi Pico」と表示するだけのプログラムです。このプログラム自体は、あまり価値があるものではありません。しかし、「ライブラリの使い方」と「ディスプレイの使い方」は応用範囲が広いテクニックです。

ライブラリは、ラズPicoでマイコンプログラミングをするときだけでなく、パソコンでゲームプログラミングするときでも必須です。

そして、ディスプレイに表示させることができれば、プログラムの動きを表示することや、センサーの取得値を表示することが可能になります。今までは、ラズPicoとパソコンを接続して、パソコンの画面に表示することはできました。OLEDが使えると、パソコンと切り離しても、ラズPicoだけでいろいろな値を表示できます

このように、アイディア次第で用途が広がるのがディスプレイです。今後のメンバーのアイディアに期待しています。