蓝色骨骨头 发表于 2015-4-25 17:32:00

程序设计基础中按键控制灯问题求解

我是根据书上的例子做的 为什么不能实现按键按下灯亮 再按下 灯灭的效果呢 直接就不亮 能帮我看下代码么 谢谢
int redPin=11;
int buttonPin=7;
boolean redState=false;
void setup()
{
pinMode(redPin,OUTPUT);
pinMode(buttonPin,INPUT_PULLUP);
}
void loop()
{
while(digitalRead(buttonPin)==HIGH){}
if(redState==true)
{digitalWrite(redPin,LOW);
redState=!redState;
}
else
{
    digitalWrite(redPin,HIGH);
    redState=!redState;
}
delay(500);
}

林定祥 发表于 2015-4-25 18:10:42

按钮按下是“High”,还是“low”请检查电路,并与程序相对应。

tsaiwn 发表于 2015-4-25 18:55:28

代码没问题
一定是你电路接错了 !
或是 pin 搞錯了

蓝色骨骨头 发表于 2015-4-25 21:25:41

林定祥 发表于 2015-4-25 18:10 static/image/common/back.gif
按钮按下是“High”,还是“low”请检查电路,并与程序相对应。

好的 我在试试 谢谢了

蓝色骨骨头 发表于 2015-4-25 21:26:18

tsaiwn 发表于 2015-4-25 18:55 static/image/common/back.gif
代码没问题
一定是你电路接错了 !
或是 pin 搞錯了

好的 我试试 谢谢了

蓝色骨骨头 发表于 2015-4-26 09:29:04

林定祥 发表于 2015-4-25 18:10 static/image/common/back.gif
按钮按下是“High”,还是“low”请检查电路,并与程序相对应。

确实可以了 我想问一下 如果我用两个按键控制两盏灯 也想达到这样的效果 该怎么改代码的 我是相当于复制了一段 可是只能按点亮的顺序 才能熄灭 不能实现任意的点亮与熄灭 求解

蓝色骨骨头 发表于 2015-4-26 09:30:15

tsaiwn 发表于 2015-4-25 18:55 static/image/common/back.gif
代码没问题
一定是你电路接错了 !
或是 pin 搞錯了

确实可以了 我想问一下 如果我用两个按键控制两盏灯 也想达到这样的效果 该怎么改代码的 我是相当于复制了一段 可是只能按点亮的顺序 才能熄灭 不能实现任意的点亮与熄灭 求解

tsaiwn 发表于 2015-4-26 18:13:54

蓝色骨骨头 发表于 2015-4-26 09:30 static/image/common/back.gif
确实可以了 我想问一下 如果我用两个按键控制两盏灯 也想达到这样的效果 该怎么改代码的 我是相当于复制了 ...

因为你用 while( ) 等到不是 HIGH (就是按了按钮)才会离开 while
所以, 变成只要不按就会被卡住在该 while( ) :
   while(digitalRead(buttonPin)==HIGH){}
那样底下的句子都不会被执行
如果只有两个按钮可以稍微改一下即可:
int aa, bb;
aa = digitalRead(buttonPin);
bb = digitalRead(buttonPin222);
while( (aa == HIGH)&&(bb == HIGH) ){
    aa = digitalRead(buttonPin);
    bb = digitalRead(buttonPin222);
}
// 只要有按下一个就会下来到这
if(aa == LOW) {
   一定是按了 buttonPin
}else{
   不用看 bb , 一定是 bb 变 LOW 啦
}

如果有超过 2 个 按钮
那最好不要用 while 一直等按钮 !

蓝色骨骨头 发表于 2015-4-26 18:19:21

tsaiwn 发表于 2015-4-26 18:13 static/image/common/back.gif
因为你用 while( ) 等到不是 HIGH (就是按了按钮)才会离开 while
所以, 变成只要不按就会被卡住在该 whi ...

好的 谢谢大神指点哈
页: [1]
查看完整版本: 程序设计基础中按键控制灯问题求解