第3回:ボタン入力でLEDを制御してみよう

つぶやき

今回のゴール

  • 押しボタンを押すと LED が点灯する仕組みを作る
  • Pin.IN(入力モード)の使い方を学ぶ
  • プルアップ/プルダウン抵抗の役割を理解する

使う部品

  • Raspberry Pi Pico W 本体
  • タクトスイッチ(押しボタン) × 1
  • ジャンパーワイヤー数本
  • ブレッドボード

配線図

🔽 配線イメージ(ブレッドボード接続例)

  [Pico W ピン配置(例)]

   GP16 ---- ボタン ---- 3.3V
     |       
     └── 内部プルダウンでGNDに接続される

   'LED'(オンボードLED)
  • ボタン片側 → Picoの GP16 ピン
  • ボタンもう一方3.3V
  • Pico 側で Pin.PULL_DOWN を有効にすると、押されていないときは 0(LOW, GND) になり、押すと 1(HIGH, 3.3V) になります。

※実際のブレッドボード図はこんな感じになります:

📌(ここにスクリーンショット/配線図を入れる想定 → Fritzing等で作成)


サンプルコード

from machine import Pin
import utime

# ボタン入力(GP16)
button = Pin(16, Pin.IN, Pin.PULL_DOWN)

# LED出力(オンボードLED)
led = Pin('LED', Pin.OUT)

while True:
    if button.value():  # ボタンが押されているか判定
        led.value(1)    # LED点灯
    else:
        led.value(0)    # LED消灯
    utime.sleep(0.1)    # チャタリング対策のため短い待ちを入れる

実行してみよう

  • ボタンを押す → LED が点灯
  • ボタンを離す → LED が消灯

ポイント解説

  1. 入力モード (Pin.IN)
    • 出力のときは Pin.OUT を使いましたが、今回は入力なので Pin.IN を指定します。
  2. プルアップ/プルダウン抵抗
    • ボタンを押していないときに「フワフワした値」にならないように、基準を決める必要があります。
    • Pin.PULL_DOWN → 押していないときは 0V(GND)、押すと3.3Vで 1 になります。
    • Pin.PULL_UP を使えば、逆に押していないときに 1、押すと 0 にできます。
  3. チャタリング対策
    • 実際のスイッチは押したときに「ガタガタ」するので、短い sleep(0.05〜0.1秒) を入れると安定します。

次回予告

「第4回:ボタンを押すごとにLEDのON/OFFを切り替える(トグル動作)」に進みます。


コメント