目次

クリスマスツリー

 LEDを利用した点滅回路の応用例として
 クリスマスツリーを考えます。



 クリスマスツリーは、LEGがランダムに点灯と消灯を
 繰り返すので、乱数を利用して点滅させればよいと
 わかります。

 Arduinoでは、乱数生成の関数が用意されています。
 これを利用することにしましょう。

 ArduinoIDEから、リファレンスをアクセスして
 乱数に関する関数の説明まで辿りついてみます。

 ArduinoIDEの「ヘルプ」をアクセス
  ArduinoIDEのメニューバーにある「ヘルプ」をクリック。



 「リファレンス」をアクセス



 randomの説明にアクセス
  「リファレンス」をクリックして、トップページ表示。



  Random Numbersが見えるまで、スクロールダウン。



  random()をクリック。



 random利用のサンプルスケッチ表示
  random()に関連するトップページ表示。



  サンプルスケッチが見えるまで、スクロールダウン。



  説明で関数randomの利用方法を理解します。

  random()の引数には、整数を指定。
  与えた整数より1だけ少ない数値を返す。
  開始整数、終了整数を与えると、その範囲の整数値を返す。

 クリスマスツリーにつけたLEDの点灯、消灯を
 どう実現するかを考えます。

 9個のLEDランプがあるので、時間をおいて乱数を発生させ
 点灯するLEDランプの番号を決めます。



 消灯するLEDランプの番号は、次のように計算します。

 8−(点灯するLEDの番号)

 loop中の実現処理シーケンスを決めます。
  1. random()で、0〜8の整数を生成
  2. 1で作成した番号のLEDを点灯
  3. 消灯するLEDの番号を計算
  4. 3で算出した番号のLEDを消灯
  5. ディレイ
 シーケンスを作成すると、以下でよいでしょう。 // generate LED number i = random(LAST); // turn on target LED digitalWrite(i,LOW); // generate other LED number i = MAX - i ; // turn off target LED digitalWrite(i,HIGH); // delay delay(xinterval);  乱数を使う場合、種(シーズ)を決めなければ  毎回同じ動作をしてしまいます。  乱数のシーズを与えるには、いくつかの定番があります。  今回は、Arduinoに電源が入ってからの経過時間を使い  異なるシーズを生成します。  次のように記述してsetupに入れておきます。 randomSeed((millis() % DIVX));  関数millis()は、Arduinoに電源が入ってからの  経過時間を返します。  スケッチにまとめます。 typedef unsigned char UBYTE ; #define DIVX 1000 #define LED 2 #define LAST 9 #define MAX 8 int xinterval ; UBYTE i ; void setup() { // initialize the digital pin as output: for ( i = 0 ; i < LAST ; i++ ) { pinMode(LED+i, OUTPUT); } // set random seed randomSeed((millis() % DIVX)); // set interval xinterval = 500 ; } // the loop() method runs over and over again, // as long as the Arduino has power void loop() { // generate LED number i = random(LAST); // turn on target LED digitalWrite(i,LOW); // generate other LED number i = MAX - i ; // turn off target LED digitalWrite(i,HIGH); // delay delay(xinterval); }  スケッチができたなら、ブレッドボードにLEDと  抵抗をつけて、動作確認します。  Arduinoには、5Vと3.3Vの電源出力があります。  LEDの電流制限抵抗の値は、2つの電源でどの程度  にしたらよいか計算してから接続します。  LEDには1mAを流すとします。

目次

inserted by FC2 system