做点什么,但检查按钮是否一直被点击

时间:2014-09-10 06:32:28

标签: c function button arduino

我有一个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;。这可能吗?

2 个答案:

答案 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()表示已经过了足够的时间,则可以闪烁。

当你想等待时,会使用

延迟;如果你想做某事使用其他技术。

另一种方法是使用中断,但我建议你使用第一种方法......