yqfans 发表于 2015-3-4 01:39:40

uvvvvw 发表于 2015-3-3 20:12 static/image/common/back.gif
找了只按键,试了一下。很成功呢。
按键没有接电阻,直接用Uno的内部上拉电阻。
亦没有接LED,就用Un ...

是的,这会对了!很高兴,谢谢大家的帮助!
关于这个程序还有几个问题想问下,1,关于buttonState,这个我照字面上理解为按钮的状态,这个状态是变量么?如果是,变量的范围是多少?2, 关于break,这是条很棒的语句,意思是停止在当前, case中的语句不断循环么?

uvvvvw 发表于 2015-3-4 10:55:45

yqfans 发表于 2015-3-4 01:39 static/image/common/back.gif
是的,这会对了!很高兴,谢谢大家的帮助!
关于这个程序还有几个问题想问下,1,关于buttonState,这个 ...

对呀,buttonState 就是按键的状态。
按一下,buttonState = 1; 按第二下,buttonState = 2;按第三下,buttonState = 3;
按第四下,buttonState = 1; 按第五下,buttonState = 2...................................

switch(){} 跟 if(){} 分别不大。

switch (buttonState)
{
case 1:
         digitalWrite(ledPin, HIGH);
         break;
case 2:
         currentMillis = millis();                           
         if (currentMillis - previousMillis > interval)   
         {
            previousMillis = currentMillis;   
            digitalWrite( ledPin, digitalRead( ledPin ) ^ 1 );   
         }
         break;
case 3:
         digitalWrite(ledPin, LOW);

可以这么写:

if (buttonState==1)
{
   digitalWrite(ledPin, HIGH);
}
if (buttonState==2)
{
   currentMillis = millis();                        
   if (currentMillis - previousMillis > interval)   
   {
      previousMillis = currentMillis;   
      digitalWrite( ledPin, digitalRead( ledPin ) ^ 1 );   
   }
}

if (buttonState==3)
{
   digitalWrite(ledPin, LOW);
}

LXYLWJ 发表于 2017-12-13 10:08:41

uvvvvw 发表于 2015-3-4 10:55
对呀,buttonState 就是按键的状态。
按一下,buttonState = 1; 按第二下,buttonState = 2;按第三下 ...

这个闪烁的时间怎么改动   currentMillis = millis();                           
         if (currentMillis - previousMillis > interval)   
         {
            previousMillis = currentMillis;   
            digitalWrite( ledPin, digitalRead( ledPin ) ^ 1 );   
         }

uvvvvw 发表于 2017-12-16 00:17:41

LXYLWJ 发表于 2017-12-13 10:08
这个闪烁的时间怎么改动   currentMillis = millis();                           
         if (curre ...

改 interval 的值就可以了。

LXYLWJ 发表于 2017-12-18 09:45:43

嗯,是的。可以,谢谢!那如果在按键按一下LED亮,在亮的同时开始定时《比如1分20秒结束》,如果在LED亮的时候第二次按按键LED灭,定时取消,请问这个定时功能怎么加进去,谢谢!
页: 1 2 3 [4]
查看完整版本: 小白求助~ 按键控制LED,如何按一下松开,亮;按一下松开,闪烁;再按一下松开,灭。