質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

2回答

1631閲覧

Arduino unoを用いてランダム関数を使いたいです。

carnage0216

総合スコア194

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2018/06/08 10:19

以下はArduino unoで書いたプログラムなのですが、うまくいきません。
本を参考にしたわけではなく、random関数の使い方を調べてif文と使い合わせたのですが、どうやらrandom関数に関してもif文に関してもうまく理解できていないようでエラーが出ます。
どうか載せたプログラムの原型を崩さずに何が間違っているのかアドバイスを頂けないでしょうか?

int a=300; int b=200; long randomNumber; void setup() { pinMode(12,OUTPUT) ; pinMode(11,OUTPUT) ; pinMode(10,OUTPUT) ; Serial.begin(9600); } void loop() { randomSeed(millis()); randomNumber = random(1,2); if(randomNumber==1){ digitalWrite(12, HIGH); delay(a); digitalWrite(12, LOW); delay(b); digitalWrite(11, HIGH); delay(a); digitalWrite(11, LOW); delay(b); digitalWrite(10, HIGH); delay(a);//光る間の時間 digitalWrite(10, LOW); delay(1000);} if (randomNumber==2){ digitalWrite(12, HIGH); delay(10); digitalWrite(12, LOW); delay(10); digitalWrite(11, HIGH); delay(10); digitalWrite(11, LOW); delay(10); digitalWrite(10, HIGH); delay(10);//光る間の時間 digitalWrite(10, LOW); delay(10); digitalWrite(11, HIGH); delay(10); digitalWrite(11, LOW); delay(10); digitalWrite(12, HIGH); delay(10); digitalWrite(12, LOW); delay(1000);} // put your main code here, to run repeatedly: }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

random( 1, 2 )は常に 1 を返します。

1以上、2未満、ということなので。
1と2がランダムに出るようにするのはrandom( 1, 3 )ではないでしょうか。
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2901

投稿2018/06/26 10:41

ttatsf

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

randomSeed(millis());
は、乱数の初期設定の関数なので、setup関数の方で実行させましょう

投稿2018/06/08 10:28

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2018/06/08 13:41

どうもありがとうございます。 申し訳ないのですが、手元にArduino unoがないので正しくできているかはわからないのですが、検証は出来ました。エラーはありませんでした。 ちなみに、randomSeed(millis());がsetup関数の方に入っていなかった以外はプログラムに問題はなかったでしょうか?
y_waiwai

2018/06/08 13:53

みたところ、コード自体にはエラーはなく、実行はできるでしょう。 ただ、どう動くのが正解なのかはわからないけど これでエラーが出る、という場合はまた聞いてくだされ
ttatsf

2018/06/27 10:39

millis()は起動してからの経過時間なので同じ値になりがち、それをrandomSeedにすると同じパターンになりがちです。 毎回違ったパターンにしたい場合には、使ってないアナログ入力をanalogRead()してrandomSeedにするっていうのをよくやります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問