【发布时间】:2018-03-06 18:09:12
【问题描述】:
我目前正在研究将按钮作为输入的项目,当我们从第一个 LED 开始单击按钮时,它会移动,并且每 0.5 秒后 LED 会相互跟随。中断功能完美运行,但问题是循环完成时中断工作。单击按钮时,我想关闭 LED。如何解决这个问题?
int button;
void setup() {
DDRD = B11110000;
attachInterrupt(digitalPinToInterrupt(2), buttonPressed, RISING);
}
void loop() {
if(button) {
PORTD = B00010000;
delay(500);
PORTD = PORTD <<1;
delay(500);
PORTD = PORTD <<1;
delay(500);
PORTD = PORTD <<1;
delay(500);
}
else {
PORTD = B00000000;
}
}
void buttonPressed() {
if(button == 0) {
button = 1;
}else {
button = 0;
}
}
【问题讨论】:
-
庞大的社区,没人知道。
-
你能澄清一下吗?第一次按下按钮时,您想打开一盏灯,每 0.5 秒切换一次打开哪个灯?当再次按下按钮时立即关闭所有灯?
-
当我按下按钮时,第一个 LED 应该打开,每 0.5 秒后它应该切换到下一个 LED,前一个应该关闭。 LED 序列。一切正常,但是当我按下按钮关闭 LED 时,它会等到循环结束,然后所有 LED 都会关闭。