我试图在我的arduino uno board中断,有线连接正确,但我不知道代码有什么问题..我想要的是led1是在默认情况下运行,当我按下开关按钮时,它停止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);
}
}
有什么建议吗?
答案 0 :(得分:0)
@TOMATO正确延迟不会在ISR侧增加,因为所有中断都被禁用。因此它不会退出。
除非您重新启用中断。
void ledchange()
{
interrupts(); // re-enable interrupts so that ms may increase for following delay()
x=true;
digitalWrite(led1,LOW);
for ( int i=0 ; i<=5 ; i++)
{
digitalWrite(led2,HIGH);
delay(1000);
digitalWrite(led2,LOW);
delay(1000);
}
}