はじめに
Raspberry Pi Picoを使った電子工作では、ボタンやスイッチは基本的な入力デバイスとして広く活用されます。この記事では、Raspberry Pi Picoで使用できるスイッチの種類や、選ぶ際の注意点について紹介します。
スイッチとは?
スイッチは、電気回路のオン・オフを切り替えるデバイスです。Raspberry Pi PicoのGPIO(入出力ピン)に接続することで、ボタンを押すたびにLEDを点灯させたり、プログラムを制御したりすることができます。
スイッチにはいくつかの種類があり、用途や設置環境によって選択する必要があります。
スイッチの主な種類と構造
タクトスイッチ(Tactile Switch)
タクトスイッチは、押している間だけ回路を接続する(モーメンタリ動作)スイッチです。短時間の信号入力に適しており、電子工作や家電製品の操作ボタンなどに広く使用されています。
<構造・動作原理>
スイッチを押すことで導電性の金属ドームが接触し、回路が接続されます。指を離すとバネの力で元の状態に戻ります
トグルスイッチ(Toggle Switch)
トグルスイッチは、レバーを上下(または左右)に動かすことで、回路のオン・オフを切り替えるスイッチです。電源のオン・オフや、モード切り替えなどに使用されます。
<構造・動作原理>
レバーを倒すことで内部の接点が物理的に切り替わり、回路がオンまたはオフになります。一度倒すとその位置を保持する特徴があります(ラッチ動作)
スライドスイッチ(Slide Switch)
スライドスイッチは、スライダーを横方向に動かして接点を切り替えるスイッチです。スペースの制約がある機器や、選択肢の切り替えに適しています。
<構造・動作原理>
スライダーを動かすことで異なる接点間の接続が切り替わります。例えば、3端子タイプの場合、中央ピンが左右のどちらかのピンと接続される仕組みです
ロータリースイッチ(Rotary Switch)
ロータリースイッチは、ノブ(つまみ)を回転させることで複数の回路を切り替えられるスイッチです。オーディオ機器やモード選択などに使用されます。
<構造・動作原理>
ノブを回転させることで、内部のディスクが回り、異なる端子間の接続が切り替わります。多段階のモード選択が可能です。
スイッチを選ぶ際の注意点
スイッチを選ぶ際には、いくつか注意するポイントがあります。
ブレッドボードで使いにくいタイプがある
スイッチの中には、ピンの配置がブレッドボードに適さないものもあります。
・ピン幅が広すぎる ブレッドボードに正しく挿入できない場合があります。
・ピンの形状が特殊 はんだ付けが必要なタイプがあり、試作段階では使いにくいことがあります。
・スイッチの大きさ 物理的にブレッドボードのスペースを圧迫し、他の部品の配置に影響を与えることがあります。
足の本数に色々なタイプがある
スイッチには、2本、3本、4本以上のピンがあるものが存在します。用途に応じた選択が必要です。
・2本(SPST Single Pole Single Throw)
単純なON/OFF用途に適している ex.LEDの点灯/消灯
・3本(SPDT Single Pole Double Throw)
一方の回路をONにし、もう一方をOFFにする用途に適している ex.モード切り替えSW
・4本以上 複雑な回路制御用。
一部のタクトスイッチは4pinあるが、内部で2pinずつ短絡されているため、実際の接続には注意すること
配線
RaspberryPi Pico | タクトスイッチ(2pin)/LED |
GP16(21番) | タクトスイッチ |
GND(23番) | タクトスイッチ |
GP15(20番) | LED アノード |
GND(13番) | 抵抗(330Ω以上)/LEDのカソードを直列 |
タクトスイッチを使ってみる
LEDの回路の途中にスイッチを挟み込めば回路としてわかりやすいですが、あえてスイッチの信号を利用してLEDを操作します。また、Raspberry Pi Picoでは、ソフトウェア的にGPIOピンを内部プルアップ/プルダウンの切り替えができますので、活用しましょう。
- プルアップ(Pull_up)
GPIOピンを内部で3.3V(High)に接続し、スイッチを押されると0(Low)になる設定
→スイッチは「GPIOとGNDに接続」することで回路が作られる (今回の設定) - プルダウン(Pull_down)
GPIOピンを内部でGND(Low)に接続し、スイッチを押されると1(High)になる設定
→スイッチは「GPIOと電源(3.3V)に接続」することで回路が作られる
次の理由でプルアップで使うことが推奨されます。
・ノイズに強く、安定動作しやすい
・スイッチがGNDに接続されるため、設計がシンプルになる
from machine import Pin
import time
# GPIOピン設定
switch = Pin(16, Pin.IN, Pin.PULL_UP) # 内部プルアップ設定
led = Pin(15, Pin.OUT)
while True:
if switch.value() == 0: # スイッチが押されたら
led.value(1) # LEDを点灯
else:
led.value(0) # LEDを消灯
time.sleep(0.1)
まとめ
生活の中にもたくさん登場するスイッチ。どことこがつながっているのか?連動させるにはどうすれば?など意外と難しい部品ではありますが、押下したときにプログラムの挙動を変えることができるようになり、楽しさが倍増します。是非チャレンジしてみてください。
コメント