Skip to content

Day 4|性格:if文で「わがまま」にする

1. 今日やること

  • 配線は昨日のまま(LED + ボタン)
  • プログラムだけ を書き換える
  • トグル動作(押すたびにON/OFF切り替え)を作る

スポンサーリンク(開発中はプレースホルダー)

2. 使う部品

  • Day 3と同じ構成です。そのままでOK。

3. 完成形(今日のゴール)

昨日は「押している間だけ」でしたが、今日は 「一回押すと点灯、もう一回押すと消灯」 させます。 部屋の照明スイッチのような動作です。

4. 手順

Step 1: 「状態」を覚えさせる

Picoに「今、電気は点いてる?消えてる?」という記憶を持たせます。 これを 変数(へんすう) と言います。

Step 2: ロジックを考える

  1. もしボタンが押されたら...
  2. 今の状態を確認する。
  3. 点いてれば消す。消えてれば点ける。
  4. 少し待つ(チャタリング防止)。

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に歌を歌わせます。