2012年2月27日月曜日

複数のLED制御してみました。その2

どうも晴彦です。

前回中途半端に終わってしまっている複数LEDの制御の説明からしたいと思います。

ではではfor文の説明からしたいと思います。
「for文とは条件を満たしている限り{}内の命令をループさせる」という命令になります。
書き方としては「for(初期値;条件;加算){}」です。

今回の場合で説明すると
for (int i = 2; i>= 9; i++)
と書いているので

int i = 2が初期値
i >= 9が条件
i++が加算
という設定になっています。

まずは初期値にあたるint i = 2というのはint型(-32768から32767)の整数を
自由に入れる事が出来る変数iを作って同時にi = 2と代入しているので「iは2からですよ」となります。
iの部分は他の命令文などと同じ名前ではない限り自由に変えてもいいので
自分の好きな文字にしてみてください。


次に条件にあたるi >= 9はiが9以上(9を含む)場合は{}内の命令をループという条件になります。
条件は他にも
i > 9はiが9より大きい(9を含まない) 
i < 9はiが9より小さい(9を含まない)
i <= 9はiが9未満(9を含む)
などがありますので場面によって使い分けてみてください。

次に加算にあたるi++ですが加算というのはループ一回毎にiを変化させています。
i++は正式に書くとi = i + 1となりどちらで書いても同じ意味なります。
数字の変化としては
一度目はi =i(2)+1 =i(3) 二度目はi = i(3)+1 = i(4)と1づつ増えていきます。
他にも
i--(i = i - 1)で1づつ減らしたりi = i * 2で 2・4・8・16と倍倍に増やしたりもOKです!

すべてをまとめてみると
iは2から1づつ増えていき9以上(10)になったらループから抜けるという動きになります。

今回の{}内の命令は
digitalWrite(i,HIGH);
delay(100);
digitalWrite(i,LOW);
delay(100);

とありますので
一度目は
digitalWrite(2,HIGH);
delay(100);
digitalWrite(2,LOW);
delay(100);
二度目は
digitalWrite(3,HIGH);
delay(100);
digitalWrite(3,LOW);
delay(100);
と自動で数字が変わっていくので短い文で順番点灯が出来た!ってなります。

今回も時間が遅くなってしまったのでランダム点灯は
次回書きたいと思います。
なお、次回はランダム以外にももう少しスケッチが見やすくなるような
方法を一緒にやりたいと思います。

1 件のコメント:

  1. arduino初心者です。サルでもわかる説明書きよ〜くわかります。有難うございます。

    返信削除