どうも、なかしーです。
僕は自動車のマイコンにプログラミングをする組み込みエンジニアとして働きつつ、YouTubeでArduinoの使い方を解説しています。
Arduinoの乱数はどんな使い方をするの?
という疑問を解決します。
乱数を使うとランダムに数値を生成してくれます。
ソーシャルゲームのガチャなど、確率が絡む処理を行いたい時に使われます。
この記事では「Arduinoで乱数を使ったサイコロの作り方」について解説します。
動画でも解説しています!
Arduinoで使える乱数の関数
Arduinoには標準で乱数の関数が入っています。
使えるのはこちらの2つです。
- randomSeed(seed)|乱数にシード値を与える関数
- random(min, max)|生成する値を指定できる関数
詳しく解説します。
randomSeed(seed)の使い方
乱数を生成する元となる値を引数として渡します。
randomSeed(1);
random(min, max)の使い方
こちらはシード値を使わず、生成する数値の範囲を指定することができます。
引数minに下限値、maxに上限値を入力しますが、1つしか入力しなかった場合は上限値として処理されます。
入力した上限値から1を引いた値までの範囲となるので注意してください。
戻り値としてlong型の数値を返します。
long number = 0;
number = random(100);
Arduinoで乱数を使ったサイコロを作る
Arduinoにタクトスイッチと7セグメントLEDを繋いでサイコロを作りました。
使った部品はこちらです。
- 7セグメントLED(カソードコモン)・・・1個
- タクトスイッチ・・・1個
- 抵抗(10kΩ)・・・1個
- 抵抗(220Ω)・・・7個
回路図はこんな感じです。
プログラムはrandom関数を使いました。
long number = 0;
unsigned char data[10][7] = {
{1,1,1,1,1,1,0}, //0
{0,1,1,0,0,0,0}, //1
{1,1,0,1,1,0,1}, //2
{1,1,1,1,0,0,1}, //3
{0,1,1,0,0,1,1}, //4
{1,0,1,1,0,1,1}, //5
{1,0,1,1,1,1,1}, //6
{1,1,1,1,1,1,1}, //8
{1,1,1,1,0,1,1}}; //9
void setup() {
pinMode(2, INPUT); //スイッチ
pinMode(3, OUTPUT); //7セグa
pinMode(4, OUTPUT); //7セグb
pinMode(5, OUTPUT); //7セグc
pinMode(6, OUTPUT); //7セグd
pinMode(7, OUTPUT); //7セグe
pinMode(8, OUTPUT); //7セグf
pinMode(9, OUTPUT); //7セグg
}
void loop() {
int i = 0;
if(digitalRead(2) == 1) {
number = random(1, 7); //1から6の乱数を生成
for (i = 0; i < 7; i++) {
digitalWrite((3 + i),data[number][i]); //7セグ表示
}
delay(10);
}
}
7セグメントLEDの使い方について知りたい方はこちらの動画をご覧ください。
他にもArduinoの使い方を動画で解説しています!
>>なかしーの電子工作部
Arduinoで乱数を使ったサイコロを作り方|まとめ
この記事では「Arduinoで乱数を使ったサイコロを作り方」について解説しました。
乱数を使うとランダムな数値を生成することができます。
Arduinoには乱数を生成する関数が2つあります。
- randomSeed(seed)|乱数にシード値を与える関数
- random(min, max)|生成する値を指定できる関数
Arduinoの人気記事
>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】
>>Arduinoをゼロから勉強する方法を紹介【参考書は不要】
>>Arduinoのプログラムの書き方【基本的なルールは4つある】
当ブログで人気のArduino入門キット