【发布时间】:2014-08-01 01:13:05
【问题描述】:
我试图中断我的 arduino uno 板,有线连接正确,但我不知道代码有什么问题。我想要的是 led1 在默认情况下运行,当我按下switchbutton 它停止了 led1 的工作并开始为 led2 制作一个循环 .. 我已经检查了几次代码,但我仍然不知道代码中的错误
int led1 = 13;
int led2 = 12;
int button=0;
boolean x = false ;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(button, INPUT);
attachInterrupt(button, ledchange , CHANGE);
}
void loop()
{
digitalWrite(led1, HIGH); // turn the LED on (HIGH is the voltage level)
//delay(1000); // wait for 1000 melli-second
}
void ledchange()
{
x=true;
digitalWrite(led1,LOW);
for ( int i=0 ; i<=5 ; i++)
{
digitalWrite(led2,HIGH);
delay(1000);
digitalWrite(led2,LOW);
delay(1000);
}
}
有什么建议吗?
【问题讨论】:
-
不要在 ISR 中使用
delay()。 -
你使用的是 D2 而不是 D0?
-
作为一般原则,不要在 ISR 中做冗长的事情。最好只设置/清除那里的标志,然后检查主循环中的标志。
标签: arduino arduino-uno interruptions