LEDとスイッチの制御

評価基板を使ったサンプルとしてLEDとスイッチの制御を紹介します。


使用部品

AVR LCD評価基板
ATMEL AVR ATmega328 (DIP)
バイパスコンデンサー マイコンの電源用
タクトスイッチ
LED
抵抗器
※サンプルの映像では今回のプログラムの実行に使用しない部品も実装されています。

開発環境

Arduino IDEが動作するPC
Arduino IDE(Ver0.22で確認)
ISP AVRISPmkII

ソースコード

const int led1=0;  // LED1を接続しているピンD0
const int led2=1;  // LED2を接続しているピンD1
const int button1=2;  // button1を接続しているピンD2
const int button2=3;  // button2を接続しているピンD3
const int button3=4;  // button3を接続しているピンD4
int buttonState = 0; //0:idle 1:blink LED1 2:blink LED2 3:blink LED1&2
void setup() {
  pinMode(led1, OUTPUT);   // pinのモードをOutputに設定 
  pinMode(led2, OUTPUT);   // pinのモードをOutputに設定
  pinMode(button1,INPUT);  // pinのモードをInputに設定
  pinMode(button2,INPUT);  // pinのモードをInputに設定
  pinMode(button3,INPUT);  // pinのモードをInputに設定
}

void loop() {
  if( digitalRead(button1) == HIGH){ //LED1が点滅します
    for (int i=0;i<10;i++){
      digitalWrite(led1,HIGH);
      delay(50);
      digitalWrite(led1,LOW);
      delay(50);
    }    
  }else if(digitalRead(button2) == HIGH){ //LED2が点滅します
    for (int i=0;i<10;i++){
      digitalWrite(led2,HIGH);
      delay(50);
      digitalWrite(led2,LOW);
      delay(50);
    }
  }else if(digitalRead(button3) == HIGH){ //LED1と2が交互に点滅します
    for (int i=0;i<10;i++){
      digitalWrite(led1,HIGH);
      digitalWrite(led2,LOW);
      delay(50);
      digitalWrite(led2,HIGH);
      digitalWrite(led1,LOW);
      delay(50);
    }      
    digitalWrite(led1,LOW);
    digitalWrite(led2,LOW);
  }

}