相生コンピュータークラブ第5期(2025年10月)~Raspberry Pi PicoにSSD1306を接続してさまざまな表示しよう~
Raspberry Pi Pico(らずべりーぱいぴこ)を使ったマイコンプログラミングは、小さなディスプレイ(SSD1306)を接続して、様々な情報を表示してみます。9月からの続きで、今までやったことを組み合わせながらできることを増やしていきます。
Contents
まずはタイピング練習とアルゴロジック
タイピング練習とアルゴロジックは、続けます。プログラムをやる限りは、キー入力からは逃げられません。
実は、生成AIを使って良い回答を得ようとしたら、正確で迅速なタイピングができることが必須です。AI時代からだと言って、タッチタイピングから逃げられるわけではないのです。
アルゴロジックは、ロジックを考える良い訓練になります。直感的に使えるのが素晴らしい。小学校低学年でもかんたんに取り組めるので、ぜひ使ってみてください。
アルゴロジック https://algo.jeita.or.jp
9月から矢印キー練習用に新しいゲームを導入しました。
単純な迷路ゲームです。このゲームを、もっとゲームらしく改造したいと思っています。私がやってもいいけれど、メンバーにやってほしいなあ。
今回はまず写経から。~温度と時刻を表示するプログラム~
温度を取得するプログラムは以前作りました。でもそのときは、パソコンの画面に表示しただけでした。せっかくディスプレイ表示を学んでいるので、SSD1306に表示します。
ついでに、現在時刻も表示してみます。
from machine import Pin, I2C, ADC
import ssd1306
import time
# I2C 初期化 (SDA=Pin16, SCL=Pin17)
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=400000)
# SSD1306 初期化 (128x64 の例)
oled = ssd1306.SSD1306_I2C(width=128, height=64, i2c=i2c)
# 内蔵温度センサー (ADC4)
sensor_temp = ADC(4)
conversion_factor = 3.3 / 65535 # ADC 16bit値を電圧へ変換する係数
def read_temperature():
reading = sensor_temp.read_u16() * conversion_factor
# データシートに基づく計算式
temperature = 27 - (reading - 0.706)/0.001721
return temperature
while True:
# 温度取得
temp_c = read_temperature()
# 現在時刻取得
t = time.localtime()
current_time = "{:02d}:{:02d}".format(t[3], t[4])
# OLED表示更新
oled.fill(0) # 画面クリア
oled.text("Temp: {:.2f} C".format(temp_c), 0, 0)
oled.text("Time: " + current_time, 0, 16)
oled.show()
time.sleep(1)
あまり新しい要素はでてきていません。ほとんど今までの内容の範囲です。一部現在時刻取得が新しい要素です。今回はこれをベースに進めていきます。
英語のつづりが難しいよね
小学生のプログラミングでしんどいのは、英語のつづりがよくわからないところです。
ある程度英語学習が進んでいると、なんとなくでもスペルを予想できるので間違いが減ります。要は、写経して一発で動くということです。
しかし、英語のスペルがわからず記号として入力している段階では、間違いが多く、一発で動くことはまずありません。プログラムをやっていて、これがしんどいのです。
これを、乗り越えるメンバーは乗り越えます。なかなか乗り越えられないメンバーをどうサポートするか、現在悩んでおります。
できたら自分で改造
さて、写経が終わったら自分たちで改造します。生成AIを使っていろいろ試しているところ。
バイブコーディングで時計らしく改造します。想像力を働かせて、それを言葉にしてコードを作っていきます。
ハンダごてを変えると腕が上がったと錯覚する
Raspberrypi Pico学習キットのはんだ付けが終わっていないので、こちらも同時並行で進めていきます。
前回まで、安いハンダごて(1200円くらい)でやっていたのですが、今回から高いハンダごて(5000円くらい)に変えて挑戦します。4倍以上の価格差は次の通り。
- 温度を一定に保つ機能がついている
- セラミックヒーター
- 小手先の変更がかんたん
この中で一番重要なのは、温度を一定に保つ機能です。熱容量の大きいパーツでも、安定して加熱できます。自分の腕が上がったように錯覚するほど、はんだ付けがきれいに速くできるようになります。
電子工作は、興味を持つメンバーとそうでないメンバーが半々くらいです。なかには電子工作のほうに興味が出てきた! というメンバーもいます。
プログラムより、形があるからわかりやすさがあるかもしれません。プログラムと組み合わせると、めちゃくちゃ楽しいですよ!
さて、デバイスのはんだ付けが終わったら、不要な足をニッパーで切ります。普段ニッパーを使うことはないののかな、作業しにくそうにしているのでアドバイス。
- ニッパーの向きで切りやすい方を使うこと
- 切りやすい方向に材料を回すこと
その昔、親父にどつかれながら覚えたことや、社会人になって先輩に小突かれながら教わったことを伝えております。
こんなのは、実際に触る機会がないとやり方なんてわからないですからね。動画でもオンラインでもやり方を知ることはできますが、教わることができるのは対面だけです。