読者です 読者をやめる 読者になる 読者になる

Push Button Counter

ボタンを押すごとに、数値が1つ増えていくカウンター。
1.変数を使って、現在の値をArduinoに記憶しておく
2.その値をLEDに出力する

1.
まずはLEDを接続しないで、ボタンを押した回数をArduinoに記憶させる。
シリアルモニターに値を表示させて、記述が正しいかチェックする。

const int button = 12; //12ピンにボタンを接続
int val = 0;
int old_val = 0;
int state = 0;

void setup(){
pinMode(button, INPUT);
Serial. begin(9600);
}

void loop(){
val = digitalRead(button);
if( (val == HIGH) && (old_val == LOW) ) { //old_valがLOWの時に、ボタン押したら、stateに1を加える。HIGHの時はボタンを押しても実行されない。これによりstateに連続して書き込まれるのを防ぐ。
if(state == 9){state = 0;} else{state++;} //9まで進んだら0に戻る
Serial.println(state);
delay(300); //ボタンのバウンジング防止
}
old_val = val; //スイッチが押されると、valはhighになり、上のif文は実行される。その直後old_valもhighになり、if文の実行が止まる。ボタンを離すとLOWに戻る。
}

 

 

2.
カウント値をLEDに表示させるために、数値を定義する。

void display_0(){         //display_0()で0を定義
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
void display_1(){         //display_1()で1を定義
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}

void setup(){
for(int = i=1, i<=8, i++){        //for文を使って、1-8のピンをまとめて指定
pinMode(i, OUTPUT);
}

void loop(){    //stateが*なら、display_*を表示
if(state == 0){
display_0();}
else if(state == 1){
display_1();}
}