Arduino始めました(2) プッシュスイッチでLEDを制御する。

posts_photo

前回はLチカを実践したので、今回はLEDにスイッチをつけてみようと思います。
物理ボタンを入れるとだいぶ電子”工作”っぽくなります。スイッチのON/OFFが出来るようになるだけで、作れるものがぐっと広がるのでモチベーションも上がります。

覚える意味も込めて細かく書いておこうと思います。

使った部品

今回使った部品は以下の通りです。
・Arduino UNO
・USBケーブル
・LED
・プッシュボタン
・Jumper Wires * 5
・10kΩ抵抗 * 2

プログラム

記述したプログラムは以下の通りです。
setupでピンの入出力を決めて、あとはloop内でボタンの変化に応じてLEDの状態を決める変数を変化させている設計になります。

const int LED = 13; //LEDをデジタルピン13に接続
const int BUTTON = 7; // ボタンをデジタルピン7に接続

int val = 0; //ボタンの状態
int old_val = 0; //valの前の値を保存しておく変数
int state = 0;   // LEDの状態を保存しておく変数

void setup() {
  pinMode(LED,OUTPUT); //LED変数は出力に
  pinMode(BUTTON, INPUT); // ボタン変数は入力に
}

void loop() {
  val = digitalRead(BUTTON);  //ボタンの状態を常時取得

  //ボタンが押された時に行う処理
  if((val==1)&&(old_val==0)){
    state = 1 - state; //LEDがオンなら1-1でオフ、オフなら1-0でオンに。
    delay(100); //バウンシング防止(スイッチの半端な接触バグ防止)
  }

  old_val = val; //変化を補足するために前のvalを保存

  //stateに応じてLEDを点灯。
  if(state==1){
    digitalWrite(LED,HIGH);
  }else{
    digitalWrite(LED,LOW);
  }
}

作った回路

Fritzingを使ってブレッドボード図を書いてみました。


こんな感じでしょうか…?合ってるか不安なので間違ってたら指摘もらえると大変嬉しいです。。

身近に工学わかる人あまり居ないんですよね。Web系のは割と行きますが、札幌で電子工作の勉強会ってどこかでやってたりするんでしょうか。


これ1冊でできる! Arduinoではじめる電子工作 超入門 改訂第2版