前回は、シリアル通信を使って送られてきたデータをそのまま送り返す「オウム返し」のプログラムを作成しました。今回はその応用として、シリアル通信を使って発光ダイオード(LED)の点灯と消灯を制御するプログラムを作ってみましょう。
基本的な通信の仕組みは前回と同じですが、今回は次の3つの点が異なります。
1つ目は、回路に発光ダイオードが追加されている点です。
2つ目は、受信したデータに応じてLEDを点灯または消灯する点です。
そして3つ目は、受信したデータをパソコン側へ送り返さない点です。
これらの違いを除けば、基本的な構成や使い方は前回と共通しています。前回の内容を参考にしながら、今回の制御も確認してみましょう。
回路
シリアルから「A」でLED ON、「B」でLED OFFにするサンプルコード
# ----------------------------------------------
# Thonny用:USBシリアルでLEDを操作するプログラム
# A を送ると LED 点灯、B を送ると LED 消灯
# 配線:LED+→ 1 kΩ → GP15、LED-→ GND
# ----------------------------------------------
import sys, select, machine, time
led = machine.Pin(15, machine.Pin.OUT) # GP15 を LED 用に
print("▶ シリアルで操作:AでON、BでOFF")
poller = select.poll()
poller.register(sys.stdin, select.POLLIN)
while True:
if poller.poll(0): # 入力があれば
cmd = sys.stdin.readline().strip() # 1 行取得して改行除去
if not cmd: # ← 追加:空行は無視
continue
print("受信:", cmd)
if cmd == "A":
led.value(1)
print("LED ON")
elif cmd == "B":
led.value(0)
print("LED OFF")
else:
print("⚠ 無効なコマンドです(A または B を送ってください)")
time.sleep(0.1) # CPU 負荷軽減
Thonny を使って文字を送ると、Raspberry Pi Pico(W)の LED を 点灯 / 消灯 できます。
🧪 操作方法(Thonny上で)
-
コードを貼り付けて「▶ 実行」ボタンを押す
-
Thonny の下部「シェル」欄に「A」と入力して Enter → LED が点灯
-
「B」と入力して Enter → LED が消灯
-
違う文字を入れると「無効なコマンドです」と表示されます
コメント
コメントを投稿