void loop() {
if(count%2==0) digitalWrite(R_LED, HIGH);
else digitalWrite(R_LED, LOW);
if(count%10==0) digitalWrite(G_LED, HIGH);
else if(count%5==0) digitalWrite(G_LED, LOW);
delay(500);
}今度はloop内の1行目と2行目がif … else … という記述になっています。
ここで出てきた if … else … 文は if よりももう少し複雑に条件分岐を行うための命令です。
if(条件1) 命令1;
else 命令2;
のように記述すると、条件1が成り立っていれば命令1を、成り立っていなければ命令2を実行することになります。
count%2の答えは0と1以外ありませんよね
ということで、1行目ではcount%2が0の時に digitalWrite(R_LED, HIGH) を実行するようにし
2行目ではcount%2が0でないとき、つまり1の時に digitalWrite(R_LED, LOW) を実行するようにしています。
これで、赤色LEDの点滅を作ります。
続いて4行目と5行目ですが
if(count%10==0) digitalWrite(G_LED, HIGH);
else if(count%5==0) digitalWrite(G_LED, LOW);
今度はelseの後ろにifがきています。
この
if(条件1) 命令1;
else if(条件2) 命令2;
条件1が成り立っていれば命令1を、
成り立っていなければ条件2を判定して成り立っていれば命令2を実行します
条件2も成り立っていなければ何もしません。
今回は、最初の条件でcountを10で割った余りが0なら緑色LEDを点灯します。
そして、10で割った余りが0でないときは、5で割った余りが0かどうかを判定し0なら緑色LEDを消灯します。
countは、0→1→2→3→4→5→6→7→8→9→10→11→12→…と増えていきますので
4行目と5行目の条件文では
0,10,20,30,40…の時に点灯
5,15,25,35,45…の時に消灯
と言うことになります。
ちなみに、countは0.5秒ごとにどんどん増えていきますが
int型は-32768~32767までの値をとることができるので
32767 / 2 = 16383.5秒後までは正常に動作することになります。
つまり、約4.5時間は問題なく動作し続けるわけです。
約4.5時間以上実行し続けるプログラムの場合は、§3.2の時と同じようにdelayの前に
if(count==10) count=0;
0 件のコメント:
コメントを投稿