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灭,定时取消,请问这个定时功能怎么加进去,谢谢!