注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiast Community on Facebookへようこそ!他の愛好家と一緒に、Raspberry Pi、Arduino、ESP32の世界により深く入り込みましょう。

参加する理由

  • 専門家サポート: 購入後の問題や技術的な課題を、コミュニティと私たちのチームの助けを借りて解決します。

  • 学習と共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。

  • 限定プレビュー: 新製品の発表や先行プレビューに早期アクセスできます。

  • 特別割引: 最新製品を特別割引でお楽しみいただけます。

  • 季節限定キャンペーンとプレゼント: プレゼント企画やホリデーキャンペーンに参加しましょう。

👉 一緒に発見し、創造する準備はできましたか? [こちら] をクリックして、今すぐ参加しましょう!

2.3 スライドスイッチ

はじめに

このプロジェクトでは、スライドスイッチを使用して2つのLEDを制御する方法を学びます。スライドスイッチは電子回路において電源スイッチとしてよく使用される部品です。本チュートリアルでは、ブレッドボード上でその動作を確認します。通常、スライドスイッチは安定した接続のためにPCBへはんだ付けして使用されますが、ここでは動作原理を理解しやすくするため、ブレッドボードを用いた柔軟な構成で実験します。


必要なもの

このプロジェクトを行うには、以下のコンポーネントを用意してください。

COMPONENT

PURCHASE LINK

ブレッドボード

購入

ジャンパーワイヤー

購入

抵抗器

購入

LED

購入

スライドスイッチ

購入

コンデンサ

購入

Fusion HAT+

-

Raspberry Pi

-


回路図

スライドスイッチの中央ピンをGPIO17に接続し、2つのLEDをそれぞれGPIO22とGPIO27に接続します。スイッチを切り替えることで、2つのLEDが交互に点灯します。

../_images/2.1.4_sch.png

配線図

以下の手順に従って回路を組み立ててください。

  1. スライドスイッチの中央ピンをGPIO17に接続します。

  2. スライドスイッチの片側のピンをGNDに、もう一方をVCCに接続します。

  3. LED1のアノードを電流制限抵抗を介してGPIO22に接続します。

  4. LED2のアノードを電流制限抵抗を介してGPIO27に接続します。

  5. 2つのLEDのカソードをGNDに接続します。

../_images/2.1.4_bb.png

サンプルの実行

このチュートリアルで使用するすべてのサンプルコードは ai-lab-kit ディレクトリに含まれています。 以下の手順でサンプルを実行してください。

cd ~/ai-lab-kit/python/
sudo python3 2.3_SlideSwitch.py

このPythonスクリプトは、Fusion HAT+上でスライドスイッチを使用して2つのLEDを制御する方法を示します。実行すると、次のように動作します。

  1. スライドスイッチがONのとき:

    • LED1(GPIO22に接続)が消灯します。

    • LED2(GPIO27に接続)が点灯します。

  2. スライドスイッチがOFFのとき:

    • LED1が点灯します。

    • LED2が消灯します。

  3. プログラムは0.5秒ごとにスライドスイッチの状態を確認し、それに応じてLEDの状態を更新します。

  4. 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

コードの解説

  1. ライブラリのインポート

    GPIO制御および待機処理のために必要なライブラリをインポートします。

    from fusion_hat.pin import Pin, Mode, Pull
    from time import sleep  # Import sleep for delay
    
  2. コンポーネントの初期化

    スライドスイッチをボタン入力として設定し、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)
    
  3. 状態監視と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
    
  4. 安全な終了処理

    Ctrl+C によって中断された場合でも、スクリプトが安全に終了するようにします。

    except KeyboardInterrupt:
        pass
    

トラブルシューティング

  1. スライドスイッチが反応しない

    • 原因: スライドスイッチの接続が正しくない、またはプルアップ/プルダウン設定が誤っている可能性があります。

    • 対処方法: スライドスイッチがGPIO17およびGNDに正しく接続されていることを確認してください。また PULL_DOWN 設定がスイッチの構成に合っているか確認してください。

  2. LEDがちらつく、または不安定に動作する

    • 原因: スライドスイッチのチャタリングが発生している可能性があります。

    • 対処方法: 入力信号を安定させるためにソフトウェアデバウンスを追加します。

    if slider.value() == 1:
       sleep(0.05)  # Debounce delay
    

拡張アイデア

  1. 双方向スイッチ制御

    2つのスライドスイッチを組み合わせて、より複雑なLED制御(簡単な照明コントロールパネルなど)を作ることができます。

  2. 音によるフィードバック

    スライドスイッチがONになったときにブザーを鳴らすようにできます。

    from fusion_hat import Buzzer
    buzzer = Buzzer(Pin(22))
    if slider.value() == 1:
       buzzer.on()
    else:
       buzzer.off()
    

まとめ

このプロジェクトでは、Fusion HAT+とスライドスイッチを使用してLEDを制御する方法を学びました。スライドスイッチは耐久性が高く、ユーザーインターフェースや制御システムなどで広く利用されています。実際に試してみることで、より高度でインタラクティブなプロジェクトへ発展させることができます。