注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiast Community on Facebookへようこそ!他の愛好家と一緒に、Raspberry Pi、Arduino、ESP32の世界により深く入り込みましょう。
参加する理由
専門家サポート: 購入後の問題や技術的な課題を、コミュニティと私たちのチームの助けを借りて解決します。
学習と共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。
限定プレビュー: 新製品の発表や先行プレビューに早期アクセスできます。
特別割引: 最新製品を特別割引でお楽しみいただけます。
季節限定キャンペーンとプレゼント: プレゼント企画やホリデーキャンペーンに参加しましょう。
👉 一緒に発見し、創造する準備はできましたか? [こちら] をクリックして、今すぐ参加しましょう!
2.3 スライドスイッチ
はじめに
このプロジェクトでは、スライドスイッチを使用して2つのLEDを制御する方法を学びます。スライドスイッチは電子回路において電源スイッチとしてよく使用される部品です。本チュートリアルでは、ブレッドボード上でその動作を確認します。通常、スライドスイッチは安定した接続のためにPCBへはんだ付けして使用されますが、ここでは動作原理を理解しやすくするため、ブレッドボードを用いた柔軟な構成で実験します。
必要なもの
このプロジェクトを行うには、以下のコンポーネントを用意してください。
COMPONENT |
PURCHASE LINK |
|---|---|
- |
|
Raspberry Pi |
- |
回路図
スライドスイッチの中央ピンをGPIO17に接続し、2つのLEDをそれぞれGPIO22とGPIO27に接続します。スイッチを切り替えることで、2つのLEDが交互に点灯します。
配線図
以下の手順に従って回路を組み立ててください。
スライドスイッチの中央ピンをGPIO17に接続します。
スライドスイッチの片側のピンをGNDに、もう一方をVCCに接続します。
LED1のアノードを電流制限抵抗を介してGPIO22に接続します。
LED2のアノードを電流制限抵抗を介してGPIO27に接続します。
2つのLEDのカソードをGNDに接続します。
サンプルの実行
このチュートリアルで使用するすべてのサンプルコードは ai-lab-kit ディレクトリに含まれています。
以下の手順でサンプルを実行してください。
cd ~/ai-lab-kit/python/
sudo python3 2.3_SlideSwitch.py
このPythonスクリプトは、Fusion HAT+上でスライドスイッチを使用して2つのLEDを制御する方法を示します。実行すると、次のように動作します。
スライドスイッチがONのとき:
LED1(GPIO22に接続)が消灯します。
LED2(GPIO27に接続)が点灯します。
スライドスイッチがOFFのとき:
LED1が点灯します。
LED2が消灯します。
プログラムは0.5秒ごとにスライドスイッチの状態を確認し、それに応じてLEDの状態を更新します。
Ctrl+Cを押して中断するまで、スクリプトは継続して実行されます。
コード
以下は、スライドスイッチの状態に応じてLEDを制御するPythonコードです。
#!/usr/bin/env python3
from fusion_hat.pin import Pin, Mode, Pull
from time import sleep # Import sleep for delay
# Initialize slider (Button) on GPIO pin 17
slider = 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 monitor the state of the slider and control LEDs accordingly
while True:
if slider.value() == 1: # Check if the slider is pressed
led1.off() # Turn off LED1
led2.on() # Turn on LED2
else: # If the sensor is not pressed
led1.on() # Turn on LED1
led2.off() # Turn off LED2
sleep(0.5) # Pause for 0.5 seconds before rechecking the sensor state
except KeyboardInterrupt:
# Handle a keyboard interrupt (Ctrl+C) for a clean exit from the loop
pass
コードの解説
ライブラリのインポート
GPIO制御および待機処理のために必要なライブラリをインポートします。
from fusion_hat.pin import Pin, Mode, Pull from time import sleep # Import sleep for delay
コンポーネントの初期化
スライドスイッチをボタン入力として設定し、GPIO22とGPIO27に接続された2つのLEDを初期化します。
# Initialize slider (Button) on GPIO pin 17 slider = 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)
状態監視とLED制御
メインループ内でスライドスイッチの状態を監視し、スイッチの状態に応じてLED1とLED2を交互に点灯させます。
# Continuously monitor the state of the slider and control LEDs accordingly while True: if slider.value() == 1: # Check if the slider is pressed led1.off() # Turn off LED1 led2.on() # Turn on LED2 else: # If the sensor is not pressed led1.on() # Turn on LED1 led2.off() # Turn off LED2 sleep(0.5) # Pause for 0.5 seconds before rechecking the sensor state
安全な終了処理
Ctrl+Cによって中断された場合でも、スクリプトが安全に終了するようにします。except KeyboardInterrupt: pass
トラブルシューティング
スライドスイッチが反応しない
原因: スライドスイッチの接続が正しくない、またはプルアップ/プルダウン設定が誤っている可能性があります。
対処方法: スライドスイッチがGPIO17およびGNDに正しく接続されていることを確認してください。また
PULL_DOWN設定がスイッチの構成に合っているか確認してください。
LEDがちらつく、または不安定に動作する
原因: スライドスイッチのチャタリングが発生している可能性があります。
対処方法: 入力信号を安定させるためにソフトウェアデバウンスを追加します。
if slider.value() == 1: sleep(0.05) # Debounce delay
拡張アイデア
双方向スイッチ制御
2つのスライドスイッチを組み合わせて、より複雑なLED制御(簡単な照明コントロールパネルなど)を作ることができます。
音によるフィードバック
スライドスイッチがONになったときにブザーを鳴らすようにできます。
from fusion_hat import Buzzer buzzer = Buzzer(Pin(22)) if slider.value() == 1: buzzer.on() else: buzzer.off()
まとめ
このプロジェクトでは、Fusion HAT+とスライドスイッチを使用してLEDを制御する方法を学びました。スライドスイッチは耐久性が高く、ユーザーインターフェースや制御システムなどで広く利用されています。実際に試してみることで、より高度でインタラクティブなプロジェクトへ発展させることができます。