3.1 LEDの点滅 (プログラムの目標と失敗例)

今回は、§2.2の予告通り
赤と緑それぞれのLEDの点滅周期を独立して変えてみます
この、課題を通して変数の使い方と簡単な条件分岐をマスターすることが目的です。

まずは、プログラムの目標を
「赤色LEDは1[s]周期で緑色LEDは5[s]周期で点滅すること」
としましょう

つまり
赤は500[ms]点灯したら500[ms]消灯
緑は2500[ms]点灯したら2500[ms]消灯
をそれぞれ繰り返すことになります。

だからといって、§2の最後に完成したプログラムを

void loop() {
  digitalWrite(R_LED, HIGH);
  delay(500);                
  digitalWrite(R_LED, LOW);

  delay(500);               

  digitalWrite(G_LED, HIGH);
  delay(2500);                
  digitalWrite(G_LED, LOW); 
  delay(2500);                
}

のようにすればいい、なんてことは全くありません
こんなプログラムを組んだらどうなるかは
賢明な皆さんなら分るはずです

試しに、書き込んで試してみてください。
想像通りの動作をしましたか?

赤:点灯 緑:消灯 (500ms)
赤:消灯 緑:消灯 (500ms)
赤:消灯 緑:点灯 (2500ms)
赤:消灯 緑:消灯 (2500ms)

を繰り返すだけですね

つまり、delayでただ時間を待っているだけでは
並列して複数のことを行わせる動作を実現できない
ということになります。

0 件のコメント:

コメントを投稿