0

我有一系列八个 LED,我试图从 ON 开始随机淡入和淡出。这就是我到目前为止的位置。

#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 上运行,无限重复。通过选择随机但是,我很难想出一个好的方法来做到这一点。如何将 pin 变量传递给 cycleLED()?或者我应该重复#define单个随机 LED?或者我应该只硬编码cycleLED1()cycleLED2()cycleLED3()等的八个独立实例。

提示或建议?

4

1 回答 1

2

您可以使 cycleLED 函数接受一个参数,如下所示:

void cycleLED(int led)

然后只需在您的模拟写入调用中使用 led 变量来代替您当前拥有的神秘 LED 东西。

于 2012-12-31T14:39:13.387 回答