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

Countdown Timer

カウントダウンタイマー

単純なタイマーを自力で考えてみた。
スタートボタンやアラームはなく、初期値から1秒ずつ減っていくだけ。
Arduinoボードには何もつながずに、シリアルモニタで数字を確認する。

・99分99秒が最大値
・1、3、4桁目は、0から9まで表示
・2桁目(10秒)は、0から5まで表示
・カウントをスタートすると、数字が1ずつ減る
・0の次は9(または5)に戻り、直後に左の桁から1を引く
・00:00になったら、LEDを点灯させる

//初期値を0111(1分11秒)にする
int digit1 = 0;
int digit2 = 1;
int digit3 = 1;
int digit4 = 1; void setup(){
Serial. begin(9600);
pinMode(13,OUTPUT);
} void loop(){
if( (digit1 == 0) && (digit2 == 0) && (digit3 == 0) && (digit4 == 0) ){ //0000なら
digitalWrite(13,HIGH);//内臓LEDを点灯
delay(10000);//10秒後
digitalWrite(13,LOW);//内臓LEDを消灯
while(1){}//loopを終了
}

else{//0000でないなら

if( (digit1 == 0) && (digit2 == 0) && (digit3 == 0) ){--digit4;}//000xなら、-1
else if(digit4 == 0){digit4 = 9;} //000x以外で、1の桁が0になったら9にする
else{--digit4;} //1の桁が0でないなら、-1

if(digit4 == 9){//一桁(秒)が9になったら
if( (digit1 == 0) && (digit2 == 0) && (digit3 == 0) ){ //000xなら、0を固定
digit1 = 0;
digit2 = 0;
digit3 = 0;
}
else if( (digit1 == 0) && (digit2 == 0) ){--digit3;}//00xxなら、十桁を-1
else if(digit3 == 0){digit3 = 5;}//00xx以外で、十桁が0になったら5にする
else{--digit3;}//十桁が0でないなら、十桁を-1
}

if( (digit3 == 5) && (digit4 == 9) ){//xx59(59秒)になったら
if( (digit1 == 0) && (digit2 == 0) ){ //0059なら、0を固定
digit1 = 0;
digit2 = 0;
}
else if(digit1 == 0){--digit2;}//0059以外で、0x59なら、百桁を1マイナス
else if(digit2 == 0){digit2 = 9;}//0059以外で、百桁が0になったら9に
else{--digit2;}//それ以外、百桁を1マイナス
}

if( (digit2 == 9) && (digit3 == 5) && (digit4 == 9) ){//x959の場合
if(digit1 != 0){--digit1;}//千桁が0でなければ、千桁を1マイナス
}
Serial.print(digit1);
Serial.print(digit2);
Serial.print(digit3);
Serial.println(digit4);//printlnは改行を加える
delay(1000);
}
}