みなさん,こんにちは
おかしょです.
スイッチにもさまざまな種類があります.
この記事で解説するマイクロスイッチは,ロボットが壁と衝突しているかどうかを検知できます.
この記事を読むと以下のようなことがわかる・できるようになります.
- マイクロスイッチとは
- マイクロスイッチの使い方
- スイッチの状態の読み取り方
この記事を読む前に
この記事ではマイクロスイッチを押した時にどのような動作をするのかを確認するためにLEDを使用します.
そのため,この記事を読む前に以下の記事を先に読んでおくことをおすすめします.
マイクロスイッチとは
タクトスイッチというのはスイッチの一種で,押した時と話した時でつながる回路を変更することができます.
この記事の冒頭でも言いましたが,このマイクロスイッチはロボットが何かに衝突したかどうかを検知するのに使用されます.
赤外センサーやカメラなどを使用しても障害物や壁を検知することはできますが,取り付け位置によっては検知できずに衝突してしまうことがあります.
そのようなときの保険として,このスイッチをロボットに搭載させることがあります.
マイクロスイッチはこのような形をしていて端子が3本出ています.
このままだとブレッドボードでは使用できないのでジャンパー線をはんだ付けして使用します.
マイクロスイッチの動作確認
マイクロスイッチを押した時や放した時にどのような動作をするのかを確認します.
そのために使用したのは以下のものになります.
![](https://i0.wp.com/okasho-engineer.com/wp-content/uploads/2020/09/5a079320cbb130d64e45d3238d53d7b3.jpg?resize=1024%2C576&ssl=1)
- Arduino Uno
- USBケーブル
- マイクロスイッチ
- LED
- 抵抗(200Ω)
- ブレッドボード
- ジャンパーケーブル
マイクロスイッチの各端子にLEDを接続して,スイッチを押した時にどのLEDが光るのかを調べていきます.
ArduinoでLEDを光らせるプログラムは以下を使用しました.
// LEDを光らせる
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
}
以下のような電子回路でLEDを光らせてみます.
![](https://i0.wp.com/okasho-engineer.com/wp-content/uploads/2020/09/1d56d0500ca21d4500d17f63ea6b9f4a-1.png?resize=436%2C255&ssl=1)
すると,以下のようにLEDが点灯します.
マイクロスイッチの使い方を確認してました。。。 #Arduino pic.twitter.com/quK0JQ88Rc
— おかしょ (@okasho_engineer) August 31, 2020
何も押していない時は赤色のLEDが点灯し,押した時は緑色のLEDが点灯します.
![](https://i0.wp.com/okasho-engineer.com/wp-content/uploads/2020/09/3340cb93b36100440bc6ea9e4666c414.png?resize=469%2C340&ssl=1)
以上の実験からタクトスイッチの構造はこのようになっていることがわかります.
何も押していない時は外側の端子とつながり,スイッチを押した時は真ん中の端子とつながることがわかりました.
マイクロスイッチの状態を読み取る
ロボットが壁などの障害物にぶつかるとマイクロスイッチのボタンが押されます.
このときにロボットはバックをしたり旋回をするなどの動作をする必要があります.しかし,そのためにはまずマイクロスイッチが押されたかどうかを知らなければなりません.
ここではマイクロスイッチが押されたのかどうかを知る方法について解説します.
ここで使用するものは以下のものになります.
![](https://i0.wp.com/okasho-engineer.com/wp-content/uploads/2020/09/4f43c53cda4c670389318cb130126dd5.jpg?resize=1024%2C576&ssl=1)
- Arduino Uno
- USBケーブル
- マイクロスイッチ
- 抵抗(10kΩ)
- ブレッドボード
- ジャンパーケーブル
抵抗値を先程よりも大きくしたのは,マイコンに直接大きな電圧がかかってしまうと故障する恐れがあるためです.
電子回路を以下のように組みます.
![](https://i0.wp.com/okasho-engineer.com/wp-content/uploads/2020/09/ab752edc6fd5e73b3181d73a353012b2-1024x666.png?resize=439%2C285&ssl=1)
以下のプログラムを使用してマイクロスイッチの状態を読み取ります.
// マイクロスイッチの状態を読み取る
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
Serial.begin(9600);
Serial.println("START");
}
void loop() {
if(digitalRead(2))
{
Serial.println("no Push");
}
if(digitalRead(3))
{
Serial.println("Push!");
}
delay(100);
}
スイッチの状態はsetup関数内でINPUTピンとして定義した2番と3番のピンで読み取ります.
読み取るときはloop関数でdegitalReadコマンドを使用します.
このコマンドを使用すると,INPUTが確認されたときは1を返し,確認されない時は0を返します.
そのため,INPUTが確認された時のみif文の中に入るようになっています.
![](https://i0.wp.com/okasho-engineer.com/wp-content/uploads/2020/09/fd31ec10f95648494d9b58653f5508c9.png?resize=204%2C370&ssl=1)
これを実行すると,スイッチを押している時はシリアルモニタに「PUSH!」と表示され,押していない時は「no PUSH!」と表示されます.
衝突回避などの動作を行いたい場合は「Push!」と表示される時のif文に衝突回避のプログラムを書き加えれば,衝突を回避することが可能です.
まとめ
![](https://i0.wp.com/okasho-engineer.com/wp-content/uploads/2020/07/c7887a92414f854a9067849a51b9bb02.jpg?resize=1024%2C575&ssl=1)
この記事ではマイクロスイッチの使い方を解説しました.
マイクロスイッチを使用すれば,ロボットが壁などに衝突しても旋回をしてまた動き出すようにすることも可能になります.
続けて読む
今回解説したマイクロスイッチの他にタクトスイッチというものがあります.
タクトスイッチも使えるようになれば,電子工作の幅が広がると思うので以下の記事も参考にしてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント