みなさん,こんにちは
おかしょです.
電子工作でスイッチを使えるようになると,工作の幅が広がります.
スイッチによって電源を切ったり,押すスイッチによってロボットの動作を変更することができます.
このとき使用するスイッチにはさまざまな種類があります.
この記事ではタクトスイッチと呼ばれるスイッチの使用方法について解説します.
この記事を読むと以下のようなことがわかる・できるようになります.
- タクトスイッチとは
- タクトスイッチ使い方
- スイッチの状態の読み取り方
この記事を読む前に
この記事ではタクトスイッチの構造を説明するためにLEDを使用しています.
そのため,この記事を読む前に以下の記事を先に読んでおくことをおすすめします.
タクトスイッチとは
タクトスイッチというのはスイッチの一種で,押すとスイッチオン状態,離すとスイッチオフの状態になります.
スイッチによっては一度押すとスイッチオンになり,離してもスイッチがオフになることはなく,もう一度押すとオフにできるスイッチもありますが,タクトスイッチはスイッチを離すとオフになります.
また,このタクトスイッチはブレッドボードで使用されることを考えられていて,ブレッドボードの中央を橋渡すように差し込むことができます.
タクトスイッチはいろいろなサイズや色がありますが,使い方は基本的に同じです.
タクトスイッチの裏面を見ると,このようになっています.
端子が四本出ています.
以下ではこの端子がどのような役割を持っているのかを調べていきます.
タクトスイッチの端子
タクトスイッチの端子がそれぞれどのような役割を持っているのかを調べるために,以下のものを使用しました.
- Arduino Uno
- USBケーブル
- タクトスイッチ
- LED
- 抵抗(200Ω)
- ブレッドボード
- ジャンパーケーブル
画像ではタクトスイッチが複数写っていますが,使用するのは1つだけです.
端子を調べる方法としてLEDを各端子に順番に接続していき,スイッチを押した時に光るのかどうかを確認します.
LEDを光らせるにはArduinoを使用しなくても電池を繋げるだけでできます.
なので,この記事でゃArduinoを使用しますが,電池でも代用ができます.
ArduinoでLEDを光らせるプログラムは以下を使用しました.
// LEDを光らせる
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
}
まずは以下のような電子回路でLEDを光らせてみます.
この回路図を使ってLEDに電流を流すと以下のようになります.
このようにタクトスイッチのボタンを押さなくても常にLEDは点灯します.
タクトスイッチを押してもLEDは光り続けました.
このことからタクトスイッチの右側上下の端子はスイッチの状態にかかわらず接続されていることがわかりました.
次は以下のようにGNDとタクトスイッチの端子の接続位置をへんこうしてみます.
すると,このように接続しただけではLEDは点灯しませんでした.
タクトスイッチ押せばLEDが点灯することが確認できました.
つまり,タクトスイッチの下側の左右の端子はスイッチを押さないと接続されないということが確認できました.
最後は以下のような電子回路で試してみます.
この電子回路の時も先程と同様でスイッチを押さないと点灯しないことがわかりました.
以上の結果から,タクトスイッチの上下の端子は常に接続されていますが,左右の端子はスイッチを押さなければ接続されないことがわかりました.
このことを図に表すと左のようになります.
このことを確認するために以下のような電子回路で実験を行いました.
このような電子回路で実行すると,常に緑色のLEDが点灯して赤色のLEDはスイッチを押さなければ点灯しないはずです.
結果は以下のようになりました.
思った通りの結果となりました.
タクトスイッチの状態を読み取る
次にタクトスイッチの状態を読み取る方法を解説します.
電子工作で使用するときは先ほどのようにLEDを直接タクトスイッチと接続して,動作を変更することもありますが,直接接続せずに動作を変更したくなることがあります.
例えば制御器のゲインを変更したり,制御器そのものを別のものと交換するときなどです.
そのようなときはスイッチの状態をマイコンで読み取る必要があります.
タクトスイッチの状態をマイコンで読み取るのに必要なものは先ほどとほとんど変わりません.
LEDが必要なくなり,抵抗器は200Ωのものから10kΩのものが必要になります.
- Arduino Uno
- USBケーブル
- タクトスイッチ
- 抵抗(10kΩ)
- ブレッドボード
- ジャンパーケーブル
抵抗値を大きくしたのは,マイコンに直接大きな電圧がかかってしまうと故障する恐れがあるためです.
電子回路を組むと以下のようになります.
マイコンはピンに入力された電圧を読み取るために以下のようなプログラムを実行します.
// スイッチの状態を読み取る
void setup() {
pinMode(2, INPUT);
Serial.begin(9600);
Serial.println("START");
}
void loop() {
if(digitalRead(2))
{
Serial.println("PUSH!");
}
else
{
Serial.println("no PUSH!");
}
}
スイッチの状態はsetup関数内でINPUTピンとして定義した2番のピンで読み取ります.
読み取るときはloop関数でdegitalReadコマンドを使用します.
このコマンドを使用すると,INPUTが確認されたときは1を返し,確認されない時は0を返します.
そのため,INPUTが確認された時のみif文の中に入るようになっています.
これを実行すると,スイッチを押している時はシリアルモニタに「PUSH!」と表示され,押していない時は「no PUSH!」と表示されます.
まとめ
この記事ではタクトスイッチの使い方を解説しました.
タクトスイッチを使用することで電子工作にも幅が出るので,工夫次第でいろいろなものを作ることができるようになります.
続けて読む
スイッチは非常に便利で,ロボットの電力をスイッチによって切り替えることができます.
以下の記事にあるキャリブレーションロボットや二輪型倒立振子ロボットでは電力をスイッチによって切り替えられるようにしています.
ロボット作りの参考にしてみてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント