注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiast Community on Facebookへようこそ!他の愛好家と一緒に、Raspberry Pi、Arduino、ESP32の世界により深く入り込みましょう。
参加する理由
専門家サポート: 購入後の問題や技術的な課題を、コミュニティと私たちのチームの助けを借りて解決します。
学習と共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。
限定プレビュー: 新製品の発表や先行プレビューに早期アクセスできます。
特別割引: 最新製品を特別割引でお楽しみいただけます。
季節限定キャンペーンとプレゼント: プレゼント企画やホリデーキャンペーンに参加しましょう。
👉 一緒に発見し、創造する準備はできましたか? [こちら] をクリックして、今すぐ参加しましょう!
2.2 マイクロスイッチ
はじめに
このプロジェクトでは、マイクロスイッチを使って2つのLEDを制御する方法を学びます。マイクロスイッチは、わずかな押し込みで動作する高感度な部品です。安全でない状態で機械やドアが動作しないようにするため、安全システムなどでよく使用されます。
必要なもの
このプロジェクトを行うには、以下のコンポーネントが必要です。
COMPONENT |
PURCHASE LINK |
|---|---|
- |
|
- |
|
Raspberry Pi |
- |
回路図
マイクロスイッチはGPIO17に接続し、2つのLEDはGPIO22とGPIO27に接続します。マイクロスイッチを押すと赤色LEDが点灯し、離すと黄色LEDが点灯します。
配線図
以下の手順に従って回路を組み立ててください。
マイクロスイッチの一方の端子をGPIO17に、もう一方をGNDに接続します。
2つのLEDのアノードを、電流制限用抵抗を介してGPIO22(黄色)およびGPIO27(赤色)に接続します。
両方のLEDのカソードをGNDに接続します。
サンプルの実行
このチュートリアルで使用するすべてのサンプルコードは ai-lab-kit ディレクトリに含まれています。
以下の手順でサンプルを実行してください。
cd ~/ai-lab-kit/python/
sudo python3 2.2_MicroSwitch.py
このPythonスクリプトは、Raspberry Piに接続されたマイクロスイッチの状態に応じて2つのLEDを制御します。実行すると、次のように動作します。
マイクロスイッチが押されたとき:
LED1(GPIO22に接続)が点灯します。
LED2(GPIO27に接続)が消灯します。
マイクロスイッチが離されたとき:
LED1が消灯します。
LED2が点灯します。
プログラムは0.5秒ごとにマイクロスイッチの状態を継続的に確認し、それに応じてLEDを切り替えます。
このスクリプトは
Ctrl+Cで中断されるまで継続して実行されます。
コード
以下のPythonコードは、マイクロスイッチの状態に応じて2つのLEDを切り替えます。
#!/usr/bin/env python3
from fusion_hat.pin import Pin, Mode, Pull
from time import sleep # Import sleep function for delays
# Initialize micro switch on GPIO pin 17
micro_switch = Pin(17, mode=Mode.IN, pull=Pull.DOWN)
# Initialize LED1 connected to GPIO pin 22
led1 = Pin(22,mode=Mode.OUT)
# Initialize LED2 connected to GPIO pin 27
led2 = Pin(27,mode=Mode.OUT)
try:
# Continuously check the state of the micro switch and control LEDs accordingly
while True:
if micro_switch.value() == 1: # If the micro switch is pressed
led1.high() # Turn on LED1
led2.low() # Turn off LED2
else: # If the micro switch is not pressed
led1.low() # Turn off LED1
led2.high() # Turn on LED2
sleep(0.5) # Pause for 0.5 seconds before checking the switch again
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
pass
コードの解説
ライブラリのインポート
fusion_hatライブラリはシンプルなGPIO制御機能を提供し、timeライブラリは待機時間を設定するために使用します。from fusion_hat.pin import Pin, Mode, Pull from time import sleep # Import sleep function for delays
コンポーネントの初期化
マイクロスイッチはプルアップを無効にした状態でGPIO17に接続し、LEDはGPIO22とGPIO27に接続します。
# Initialize micro switch on GPIO pin 17 micro_switch = Pin(17, mode=Mode.IN, pull=Pull.DOWN) # Initialize LED1 connected to GPIO pin 22 led1 = Pin(22,mode=Mode.OUT) # Initialize LED2 connected to GPIO pin 27 led2 = Pin(27,mode=Mode.OUT)
スイッチ状態の処理
プログラムはループ内でマイクロスイッチの状態を確認します。押されるとLED1が点灯しLED2が消灯し、離されるとLED1が消灯しLED2が点灯します。
while True: if micro_switch.value() == 1: led1.on() led2.off() else: led1.off() led2.on() sleep(0.5)
割り込み処理
try-exceptブロックにより、Ctrl+Cで中断した場合でもスクリプトを安全に終了できます。except KeyboardInterrupt: pass
トラブルシューティング
LEDが反応しない
原因: GPIO配線またはピン設定が正しくない可能性があります。
対処方法: LED1がGPIO22、LED2がGPIO27に接続されており、両方のLEDに適切な抵抗が入っていることを確認してください。また、マイクロスイッチがGPIO17に正しく接続されていることも確認してください。
マイクロスイッチが検出されない
原因: マイクロスイッチの設定が適切でない、またはプルアップ/プルダウン抵抗の設定が必要な可能性があります。
対処方法:
pull = Pin.PULL_UPがスイッチの構成に合っているか確認してください。プルアップが必要な場合は、初期化時に有効にしてください。
LEDがちらつく、または不安定に動作する
原因: ボタンのチャタリングが発生している可能性があります。
対処方法: 押下を検出した後に短い遅延を追加して、ソフトウェアデバウンスを実装してください。
if micro_switch.value() == 1: sleep(0.05) # Debounce delay
拡張アイデア
遅延時間の調整
遅延時間を動的に変更できるようにして、LEDの応答性を細かく調整できます。
delay = float(input("Enter delay in seconds: ")) while True: sleep(delay)
音によるフィードバック
スイッチが押されたときや離されたときに、ブザーで音による通知を追加できます。
from fusion_hat import Buzzer buzzer = Buzzer(Pin(22)) if micro_switch.value() == 1: buzzer.on() else: buzzer.off()
まとめ
このプロジェクトでは、Fusion HAT+でマイクロスイッチを使ってLEDを制御する方法を紹介しました。マイクロスイッチは汎用性の高い部品であり、安全システム、ユーザーインターフェース、産業用制御など幅広い分野で使用されています。実際に試してみることで、より高度なプロジェクトへ発展させるためのヒントが得られるでしょう。