ラズパイピコでタクトスイッチを使いLEDの点灯/消灯を制御するPythonコードの書き方

プログラミング

ラズパイピコを使って、タクトスイッチでLEDの点灯・消灯を制御する方法について解説します。初心者向けに、タクトスイッチを1回押すごとにLEDが1個ずつ消灯し、再度スイッチを押すと消灯が停止し、さらに押すと再開する動作を実現する方法を紹介します。

目標の動作

このプロジェクトの目標は、タクトスイッチを押すごとにLEDの点灯・消灯を制御することです。具体的には、タクトスイッチを1回押すとLEDが1つずつ消灯し、もう1回押すとその動作が停止、再度押すと再開するように設定します。

Pythonコードの構成

まず、ラズパイピコのGPIOピンを設定し、LEDを制御するための基本的なコードを書きます。以下のコードは、5つのLEDを制御し、タクトスイッチを使って動作をトグルする基本的な流れです。

import machine
import time
leds = [machine.Pin(1, machine.Pin.OUT), machine.Pin(2, machine.Pin.OUT), machine.Pin(3, machine.Pin.OUT), machine.Pin(4, machine.Pin.OUT), machine.Pin(5, machine.Pin.OUT)]
for led in leds:
    led.value(1)
sw = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_DOWN)

このコードでは、5つのLEDを「点灯」させる設定を行い、タクトスイッチを読み取る準備をしています。

タクトスイッチによる点灯・消灯の制御

次に、タクトスイッチを押したときにLEDを1個ずつ消灯する機能を追加します。タクトスイッチの押下を検知し、その状態に応じてLEDを消す処理を追加します。また、2回目の押下で動作を停止し、再度押すことで消灯処理を再開できるようにします。以下にコードを追加します。

count = 0
while True:
    if sw.value() == 1:
        time.sleep(0.2)
        if count < len(leds):
            leds[count].value(0)
            count += 1
        elif count == len(leds):
            break
    time.sleep(0.1)

この部分のコードでは、タクトスイッチが押されるたびに「count」が増加し、それに応じてLEDを1つずつ消灯します。また、全てのLEDが消灯した後、もう一度タクトスイッチが押されると、動作が停止します。

コードの解説

このコードのポイントは、「count」を使ってLEDの消灯順序を管理している点です。タクトスイッチが押されるたびに「count」が増えていき、その数がLEDの数と一致した時点で動作が停止します。これにより、LEDの消灯が完了したら、再度タクトスイッチを押すまで動作が停止します。

また、「time.sleep()」を使って、タクトスイッチの状態を安定させ、誤作動を防止しています。

動作の繰り返しと改善点

このプログラムは、タクトスイッチを押すことでLEDを消灯し、その後の動作を停止・再開する形で繰り返し動作します。もし繰り返し動作のパターンを変更したい場合は、「count」の値やLEDを消灯するロジックをカスタマイズできます。

さらに、タクトスイッチが長押しされた場合に一時停止したり、設定した時間が経過した後に自動的に再開するような機能も追加できます。これにより、より柔軟な制御が可能になります。

まとめ

ラズパイピコを使って、タクトスイッチでLEDの消灯・再開を制御する方法について解説しました。タクトスイッチを使ったシンプルなインタラクションを実現し、LEDの制御を1回のスイッチ操作で管理できるようになりました。この基本的な構造を元に、さらに複雑な動作や機能を追加していくことができます。

コメント

タイトルとURLをコピーしました