我有一个arduino如果没有点击按钮我想要闪烁一些LED灯。这是代码。
void startup(){
for (int x=0; x<=1;){
BUTTON5_state = digitalRead(START_BUTTON);
if (BUTTON5_state == HIGH ){
x++;
}
else{
blinkAll(1, 2000);
continue;
}
问题是它没有经常检查按钮。每次闪烁时,所有500次闪烁之间等待2秒。所以你需要按住按钮几秒钟。
我希望灯每2秒闪烁一次,但是一直检查按钮&#34;#34;。这可能吗?
答案 0 :(得分:0)
2种可能的解决方案:创建一个线程,检查按钮和原始线程让LED闪烁。或者你更快地进行for循环,并且只在每1000次左右迭代时切换led。
例如:
for (int x=0; x<=100000;x++){
//wait to make the 1024 iteration blinking visible
BUTTON5_state = digitalRead(START_BUTTON);
if (BUTTON5_state == HIGH ){
break;
}
else if (x & (1 << 10)){ //each 1024th iteration
toggleLed();
}
}
答案 1 :(得分:0)
你检查过&#34;没有延迟的闪烁&#34; Arduino IDE中的教程?嗯,这就是你想要实现的。您可以尽快轮询按钮,而不是使用延迟(阻塞),然后,如果millis()表示已经过了足够的时间,则可以闪烁。
当你想等待时,会使用延迟;如果你想做某事使用其他技术。
另一种方法是使用中断,但我建议你使用第一种方法......