基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
カメラ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
SD
SD(File操作)
周期処理(MsTimer2)
時計(RTC)
Mbed Tips
乱数
乱数を取得するためのライブラリです。
真性乱数はサンプルに示す通り、ESP32から取得できます。
randomSeed
- 概要
- 乱数を得るための種を与えます。この種が同じ場合、毎回同じ順番で乱数が得られます。
- 文法
- randomSeed(unsigned int seed)
- パラメータ
- seed: 種となる値
- 戻り値
- なし
random
- 概要
- 乱数を取得します。この関数を使う前に一度はrandomSeedを呼んでください。
- 文法
- long random(long min_num, long max_num)
- パラメータ
- min_num: 乱数の取りうる最小値。省略可
max_num: 乱数の取りうる最大値。省略可 - 戻り値
- 乱数(long)
サンプルプログラム
0~99までの乱数を100ms間隔でシリアル通信で出力する。
#include <Arduino.h>
#define INTERVAL 100
void setup()
{
Serial.begin(9600);
randomSeed(millis());
}
void loop()
{
Serial.println( random(0, 100) );
delay(INTERVAL);
}
32ビットの真性乱数を取得する。
#include <Arduino.h>
#include <Wire.h>
#define ESP32_I2C_ADDR 0x28
void setup() {
Serial.begin(9600);
Wire.setFrequency(150000);
Wire.begin();
pinMode(PIN_ESP_EN, OUTPUT);
pinMode(PIN_ESP_IO0, OUTPUT);
pinMode(PIN_SW0, INPUT);
pinMode(PIN_SW1, INPUT);
digitalWrite(PIN_ESP_IO0, HIGH);
delay(100);
digitalWrite(PIN_ESP_EN, HIGH);
delay(1000);
}
void loop() {
Wire.beginTransmission(ESP32_I2C_ADDR);
Wire.write(0);
Wire.endTransmission();
uint32_t rand;
Wire.requestFrom(ESP32_I2C_ADDR, 4);
rand = Wire.read();
rand <<= 8;
rand += Wire.read();
rand <<= 8;
rand += Wire.read();
rand <<= 8;
rand += Wire.read();
Serial.print(rand, HEX); // print the character
Serial.println();
delay(100);
}