【Arduino電子工作】タクトスイッチでLEDのON/OFF操作
目的
タクトスイッチを使い、LEDの光のON/OFFを操作・制御する
今回使うもの
LED回路部分は過去記事と同じ
追加で以下のものを用意します
- タクトスイッチ
- 抵抗器 10kΩ
タクトスイッチの購入先おすすめは
秋月電子
スイッチサイエンス
秋月電子で買うのが一番安いかもしれません
抵抗器は一気に買っておきましょう
カーボン抵抗(炭素皮膜抵抗) 1/2W全部入り (73種類0Ω付): パーツ一般 秋月電子通商 電子部品 ネット通販
設計・計算
LED回路部分は過去記事と同じ
タクトスイッチを今回付け加えますが、その際プルアップ抵抗を設けます
(実は回路で抵抗をつけなくても、プログラムでマイコンの内部抵抗を使うことができるが今回はやらない)
プルアップ抵抗についてはググると丁寧な解説がたくさんあるので、ここでは省きます。
とりあえずこのプルアップ抵抗がないとマイコンの入力に入ってくる電圧が不安定すぎて使い物になりません。
スイッチを押していない間、Arduinoの入力ピン(今回はD7を使う)には5Vがかかる
スイッチを押している間は、0V
回路
実際の回路と、ブレッドボード図、回路図
タクトスイッチの付け方には気をつけましょう
テスターによる導通チェックで確認することが大事(形状だけで判断することもできますが)
以下の回路図2枚はどちらも同じですが、若干GND(0V)の描き方がちがいます
今後は二枚目の描き方でいきます
一枚目の回路図の描き方は義務教育でも理科の授業等で学んだと思いますが
そこから一歩先へ進むと二枚目の描き方が標準になってきます
GNDの描き方は二枚目のように描いたほうがすっきりします
プログラム
/*
目的:タクトスイッチでLEDの単純なON/OFF
http://www.isopro91.com
2015/6/1
*/
int led1 = 13;
int sw1 = 7;
int flag = 0; //スイッチの状態格納用の変数
void setup() {
pinMode(led1, OUTPUT); //ピンのモードを出力に
pinMode(sw1, INPUT); //ピンのモードを入力に
}
void loop() {
//プルアップ抵抗でスイッチを押していない間5Vがピン入力に入っているので、押してない=1となる
flag = digitalRead(sw1); //スイッチの状態を読み、flagに結果を代入する
if(flag == 0){ //valの値が0であればLEDを光らせる(スイッチを押している)
digitalWrite(led1, HIGH);
}else{
digitalWrite(led1, LOW);
}
}
実際の動作
おわり