自力でLチカ2~生成AIを使ってみる~
2024年6月14日(金)は、7割ほどの出席率でした。今回も、RaspberryPi Picoを使ってLチカをプログラミングします。
- 18時00分~18時20分 タイピング練習
- 18時20分~18時35分 マウス練習
- 18時35分~19時50分 自分でLチカ
- 19時50分~20時00分 あとかたづけ
タイピング練習とマウス練習
タイピングの練習は、「寿司打」、マウスの練習は「マインスイーパー」です。
- 寿司打
https://sushida.net - マインスイーパー
https://www.google.com/search?client=firefox-b-d&q=%E3%83%9E%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%A4%E3%83%BC%E3%83%91%E3%83%BC
マインスイーパーは、難易度中で解いてもらいました。100秒を切ることは、マウスを使いこなさないと実現できません。実は、100秒を切ったメンバーもいます! 今度は60秒を切るのが目標だ!
生成AI使ってLチカをプログラミングしてみる
前回に引き続き、Lチカをプログラミングします。前回は、ウォーミングアップでLEDを光らせたらOKでした。今回はもうすこし難しいプログラムに挑戦します。
今回のテーマは、「徐々に明るさが変化しながらLED点滅させる」というテーマです。完成すると、下の動画のように点滅します。
実は、1年前にプログラムしたことある課題です。資料もわたしているので、それを探せばOKです。
ただ、それだと面白くないので、生成AIを使ってプログラミングしてみました。
簡単に使える生成AIは、いろいろあります。「copilot」「gemini」「リートン」、この3つを使ってみました。生成AIに対して「Raspberrypi PicoでLEDを点滅させるmicropythonコードを教えて」と入力します。
質問の内容は多少変わってもOKです。ぜひ、あなたも自分のパソコンで実行してみてください。
すると、RaspberryPi Picoに書くべきプログラムが自動で表示されます。これをコピーして、Thonnyに貼り付けて、実行します。
おそらく、うまく動かないはずです。メンバーも動かないと嘆いていました。
この「動かない!」を体験してほしかったのです。
生成AIがすごい! さんざんもてはやされていますが、AIに対して人間が適切に指示をしないと望む結果は得られないのです。適切に指示をするためには、人間もきちんとプログラムを理解していないとできません。
今回は、生成AIが出力したプログラムコードをベースに、自分たちでコードを書き換えました。
今回のテーマの答えの一つは、公式のドキュメント(Raspberry pi Pico Python SDK)に書いてあります。下がそのコードです。
# Example using PWM to fade an LED.
import time
from machine import Pin, PWM
# Construct PWM object, with LED on Pin(25).
pwm = PWM(Pin(25))
# Set the PWM frequency.
pwm.freq(1000)
# Fade the LED in and out a few times.
duty = 0
direction = 1
for _ in range(8 * 256):
duty += direction
if duty > 255:
duty = 255
direction = -1
elif duty < 0:
duty = 0
direction = 1
pwm.duty_u16(duty * duty)
time.sleep(0.001)
もちろんこれは答えの一つであって、ほかの正解もあります。メンバーが自力でたどり着いた答えは、この答えとは違うコードでした。
プログラムの面白いところは、ある課題を解決するのに、正解が一つではないというところです。その一方で、「動くプログラム」は正解で、「動かないプログラム」は不正解です。
プログラムは、書く人それぞれで個性が出ます。決して無味乾燥で冷徹無慈悲なものではないのです。このあたり、もっと熱を入れて伝えていきたいと考えています。
最後に、課題を順調にこなしたメンバーには、LED2つを制御するプログラムを作ってもらいました。
これは次のテーマへの布石です。7月中には完成させたいな。