0

私は、8つのLEDを制御して異なる速度で点滅またはフェードさせるArduinoスケッチを持っています。出力ピンに 1 ~ 8random の乱数を設定しdelay()、ループ内の値に30 ~ 300 の乱数を設定し+=X、フェードインまたはフェードアウトの速度を制御するために 3 つ目の乱数を設定したいと考えています。また、ライトが点滅するかフェードするかを決定する乱数を確立したいと思います(ここではブール値の乱数が機能します...)。

ここが私がぼんやりしている場所です。ドキュメントから、randomSeed()関数が を駆動することを収集しましたが、定義したすべての値が同じスケッチ内で同じシードを使用するとrandom(x,y)推測しているようです。random(x,y)

ランダム A を駆動するシード A とランダム B を駆動するシード B を定義する方法はないようです。私がやりたいことをするサンプルを見つけることができませんでした。

以下の疑似コード:

void setup() {
    pinMode(12, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(4, OUTPUT);
}

void loop() {
#
#  How can I assocaiate pinSeed with pin, delaySeed with delay and velSeed with velocity?
#
    int pinSeed = RandomSeed(analogRead(0));
    int pin = Random1(4,13);
    int delaySeed = RandomSeed(analogRead(0));
    int delay = Random(30,200);
    int velSeed = RandomSeed(analogRead(0);
    int velocity = Random(1,21);
    for (i=0;i=255;+=velocity) {
        analogWrite(pin,i);
        delay(velocity);
    }
}
4

1 に答える 1

2

シード値は、一連の乱数 (実際には疑似乱数) の開始点を設定します。シードが設定された後、乱数を描画できます。シードをリセットまたは再定義して、2 番目の乱数を取得しないでください。通常、シードはプログラム内で 1 回だけ生成する必要があります。

シードを設定できると、コードの 2 回目、3 回目などの実行時に一連の乱数を再作成できます。これはデバッグに役立ちます。

また、返される各乱数は、1 ~ 8 または 30 ~ 300 のように、さまざまな値の範囲に正規化できます。ブール値は、乱数がnumber は 1 ~ 10 に正規化されます (たとえば)。

お役に立てれば。

于 2013-08-09T04:53:51.367 に答える