0

オンから始めてランダムにフェードインおよびフェードアウトしようとしている一連の8つのLEDがあります。これが私が今のところいるところです。

#define LED1 2
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6
#define LED6 7
#define LED7 8
#define LED8 9

void setup() {
pinMode(LED1,output);
pinMode(LED2,output);
pinMode(LED3,output);
pinMode(LED4,output);
pinMode(LED5,output);
pinMode(LED6,output);
pinMode(LED7,output);
pinMode(LED8,output);
}

    void cycleLED() {
        timeOn = random(600,1800);
        timeOff = random(600,1800);
        for (fadeOut = 255; fadeOut > 0; fadeOut--) { 
            analogWrite(LED, fadeout);
            delay(timeOff); 
        }

        for (fadeIn = 0;fadeIn < 255; fadeIn++) { 
            analogWrite(LED,fadeIn);      
            delay(timeOn); 
        }
    }

これが私が立ち往生しているところです。次の擬似コードのようなことをしたいと思います。

activeLED = random(2,10);             // choose a random LED pin
LEDtoCycle = pinNumber-activeLED;     // set the active LED to the random LED pin 
cycleLED(pinNumber-activeLED);        // run cycleLED on the active LED

私の意図は、ランダムにLEDを選択し、cycleLEDそのLEDで実行して、無期限に繰り返すことです。ランダムを選択することによってしかし、私はこれを行うための良い方法に頭を包むのに苦労しています。ピン変数をcycleLED()に渡すにはどうすればよいですか?#defineまたは、単一のランダムLEDを繰り返し使用する必要がありますか?cycleLED1()または、、、、などの8つの個別のインスタンスをハードコーディングする必要がありcycleLED2()ますcycleLED3()

ヒントや提案?

4

1 に答える 1

2

次のように、cycleLED関数にパラメーターをとらせることができます。

void cycleLED(int led)

次に、現在持っている不思議なLEDの代わりに、analogWrite呼び出しでled変数を使用します。

于 2012-12-31T14:39:13.387 に答える