NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(random関数の使い方)

■random関数
 random関数は疑似乱数を生成します。完全にランダムな数字が必要な場合は、random関数を実行する前に空きアナログポートをanalogRead関数で読み込んだ値の様な、真にランダムな値を用いて、randomSeed関数を実行します。

■使用例
  Arduino IDEで使用するrandom関数の使い方は以下の通りです。試しにこのプログラムをArduino UNOで実行すると、13ピンのLEDが1秒未満の周期で完全に不規則な間隔で点滅します。
※以下プログラム中からrandomSeed(analogRead(0))の一文を抜いてもLEDは一見ランダムに点滅しますが、Arduinoを再起動すると、再起動前と同一な周期でLEDが点滅します。この為random関数は疑似乱数と言われています。

void setup() {                            //一回だけ実行する
  pinMode(13, OUTPUT);           //LEDを接続した13番ピンを出力用に設定する
}
void loop() {                              //{}内を無限ループで実行する
  randomSeed(analogRead(0)); // 未接続ピンのノイズを利用
  int i = random (1000);           //iに0~999の整数で生成した乱数を代入する。
  digitalWrite(13, HIGH);           //LEDが接続された13番ピンをHIGH(5V)にする
  delay(i);                                //iミリ秒LEDを点灯した状態で止める
  digitalWrite(13, LOW);           //LEDが接続された13番ピンをLOW(0V)にする
  delay(1000 - i);                     //1000-iミリ秒LEDを消灯した状態で止める
}
イメージ 1
図1:プログラム例

■「random(min,max)」の構文
 min :  生成する乱数の下限。省略可能
 max  :  生成する乱数の上限
 戻り値:minからmax-1の間の整数 (long) 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る