1. 今日やること
- 配線は昨日のまま(LED + ボタン)
- プログラムだけ を書き換える
- トグル動作(押すたびにON/OFF切り替え)を作る
スポンサーリンク(開発中はプレースホルダー)
2. 使う部品
- Day 3と同じ構成です。そのままでOK。
3. 完成形(今日のゴール)
昨日は「押している間だけ」でしたが、今日は 「一回押すと点灯、もう一回押すと消灯」 させます。 部屋の照明スイッチのような動作です。
4. 手順
Step 1: 「状態」を覚えさせる
Picoに「今、電気は点いてる?消えてる?」という記憶を持たせます。 これを 変数(へんすう) と言います。
Step 2: ロジックを考える
- もしボタンが押されたら...
- 今の状態を確認する。
- 点いてれば消す。消えてれば点ける。
- 少し待つ(チャタリング防止)。
5. コード
led = machine.Pin(15, machine.Pin.OUT)
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
# 今の状態を覚えておく「変数」
is_light_on = False # 最初は消えている
while True:
if button.value() == 1:
# ボタンが押されたときだけ仕事をする
if is_light_on == True:
# 今点いてるなら、消す
led.value(0)
is_light_on = False
print("OFFにしました")
else:
# 今消えてるなら、点ける
led.value(1)
is_light_on = True
print("ONにしました")
# 連続入力を防ぐために少し待つ
time.sleep(0.3)
6. つまずきログ
⚠️ 一瞬で点いて消える / 反応が良すぎる
- 原因: 処理が速すぎる
- → コンピュータは一瞬で数千回ループします。あなたが「ポンッ」と押した一瞬の間に、「点けた!消した!点けた!消した!」と100回くらい処理してしまっているかも。
- →
time.sleep(0.3)で「余韻」を持たせることで解決します。
7. 文系への翻訳
- if文: ロボットの「好み」や「性格」。
- 「もし〜なら、こうする」というルールが増えるほど、生き物らしくなります。
- 変数: ロボットの「記憶メモ」。
- これがないと、昨日のこと(さっき点けたこと)をすぐ忘れてしまいます。
8. 今日の達成
「記憶と判断力を持たせた!」
9. 次へ
光るだけでは孤独です。次は「音」を出してみましょう。 ブザーを使って、Picoに歌を歌わせます。