つくったブログ

ぼくがつくったもの。

押すと切り替わるLED

さらに進化。

今度はボタンを押すたびにLEDが切り替わる回路を作ってみた。
回路図はこちら


f:id:kyokucho1989:20130615094711j:plain:w300

プログラムは下。

// Original 01: ボタンを押すとLEDが赤→青→緑の順に点灯する。

const int red_LED = 13;        // 赤LEDが接続されているピン
const int blue_LED = 12;       // 青LEDが接続されているピン
const int green_LED = 11;      // 緑LEDが接続されているピン
const int BUTTON = 7;  // プッシュボタンが接続されているピン

int val = 0;           // 入力ピンの状態がこの変数(val)に記憶される
int old_val = 0;       // valの前の値を保存しておく変数
int state = 0;         // LEDの状態(0ならオフ、1ならオン)

void setup() {
  pinMode(red_LED, OUTPUT);    // ArduinoにLEDが出力であると伝える
  pinMode(blue_LED, OUTPUT);    
  pinMode(green_LED, OUTPUT);  
  pinMode(BUTTON, INPUT);  // BUTTONは入力に設定
}

void loop() {
  val = digitalRead(BUTTON); // 入力を読み取りvalに格納
  //変化があるかどうかチェック
  if((val == HIGH) && (old_val == LOW)) {
    state = (state+1) % 4;
    delay(100);
  }
  old_val = val;  // valはもう古くなったので保管しておく
  
  if (state == 0) {
    digitalWrite(red_LED, LOW);
    digitalWrite(blue_LED, LOW);
    digitalWrite(green_LED, LOW);
  } else if (state == 1) {
    digitalWrite(red_LED, HIGH);
    digitalWrite(blue_LED, LOW);
    digitalWrite(green_LED, LOW);
  } else if (state == 2) { 
    digitalWrite(red_LED, LOW);
    digitalWrite(blue_LED, HIGH);
    digitalWrite(green_LED, LOW);
  } else if (state == 3) {
    digitalWrite(red_LED, LOW);
    digitalWrite(blue_LED, LOW);
    digitalWrite(green_LED, HIGH);
  }
}

みんなのArduino入門:基本キット

みんなのArduino入門:基本キット