我正在使用如下所示的3 LED音序器电路和我的Arduino Uno R3。
LED 1连接到引脚2,LED 2连接到引脚3,LED 3连接到引脚4. R1 / R2 / R3为330欧姆,每个1/4 W。
代码是:
int myPins[] = {2,3,4}; // Set pin array to pins 2 through 4
void setup()
{
for (int thisPin = 0; thisPin < (sizeof(myPins)); thisPin++)
{
pinMode(myPins[thisPin],OUTPUT); // Set each pin in the array to OUTPUT mode.
}
}
void loop()
{
for (int thisPin = 0; thisPin < (sizeof(myPins)); thisPin++) // Loop every pin and switch ON & OFF.
{
digitalWrite(myPins[thisPin], HIGH); // Set LED ON.
delay(100); // Keep it ON for 100 ms.
digitalWrite(myPins[thisPin], LOW); // Set LED OFF for 50 ms and then goto next one.
delay(50);
}
}
这似乎在开始时工作正常。 LED依次闪烁13次,然后连接到引脚2的LED保持亮起。当我重新上传sketch或者甚至点击IDE上的任何菜单项时,循环重新开始。
为什么会发生这种情况,这是因为电路中有些噪音?
PS:在loop()
的第4次迭代中,连接到引脚4的LED似乎保持接近200 ms而不是100 ms,就在第13次迭代之前,板载TX LED闪烁一次。 / p>
答案 0 :(得分:4)
int thisPin = 0; thisPin < (sizeof(myPins)); thisPin++
嗯,不,不。阅读sizeof()
运算符的工作原理。您想要sizeof(myPins) / sizeof(myPins[0])
。