いそぷろのブログ

おもしろいことを考えていきたい

【Arduino電子工作】タクトスイッチでLEDのON/OFF操作

目的

タクトスイッチを使い、LEDの光のON/OFFを操作・制御する

 

今回使うもの

LED回路部分は過去記事と同じ

www.isopro91.com

 

追加で以下のものを用意します

  • タクトスイッチ
  • 抵抗器 10kΩ

 

タクトスイッチの購入先おすすめは

秋月電子

スイッチサイエンス 

【Amazon】タクトスイッチ検索結果

秋月電子で買うのが一番安いかもしれません

 

抵抗器は一気に買っておきましょう

カーボン抵抗(炭素皮膜抵抗) 1/2W全部入り (73種類0Ω付): パーツ一般 秋月電子通商 電子部品 ネット通販

 

設計・計算

LED回路部分は過去記事と同じ

 

タクトスイッチを今回付け加えますが、その際プルアップ抵抗を設けます

(実は回路で抵抗をつけなくても、プログラムでマイコンの内部抵抗を使うことができるが今回はやらない)

【Arduinoでロボット】タクトスイッチでLEDのON/OFF操作

プルアップ抵抗についてはググると丁寧な解説がたくさんあるので、ここでは省きます。

とりあえずこのプルアップ抵抗がないとマイコンの入力に入ってくる電圧が不安定すぎて使い物になりません。

f:id:isopro:20150601124623p:plain

スイッチを押していない間、Arduinoの入力ピン(今回はD7を使う)には5Vがかかる

スイッチを押している間は、0V

 

回路

実際の回路と、ブレッドボード図、回路図

【Arduinoでロボット】タクトスイッチでLEDのON/OFF操作

タクトスイッチの付け方には気をつけましょう

テスターによる導通チェックで確認することが大事(形状だけで判断することもできますが)

【Arduinoでロボット】タクトスイッチでLEDのON/OFF操作

 

以下の回路図2枚はどちらも同じですが、若干GND(0V)の描き方がちがいます

今後は二枚目の描き方でいきます

【Arduinoでロボット】タクトスイッチでLEDのON/OFF操作

一枚目の回路図の描き方は義務教育でも理科の授業等で学んだと思いますが

そこから一歩先へ進むと二枚目の描き方が標準になってきます

【Arduinoでロボット】タクトスイッチでLEDのON/OFF操作

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);
    }
}

 

実際の動作 

 

おわり