极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10872|回复: 8

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

[复制链接]
发表于 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”请检查电路,并与程序相对应。
回复 支持 反对

使用道具 举报

发表于 2015-4-25 18:55:28 | 显示全部楼层
代码没问题
一定是你电路接错了 !
或是 pin 搞錯了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-25 21:25:41 | 显示全部楼层
林定祥 发表于 2015-4-25 18:10
按钮按下是“High”,还是“low”请检查电路,并与程序相对应。

好的 我在试试 谢谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-25 21:26:18 | 显示全部楼层
tsaiwn 发表于 2015-4-25 18:55
代码没问题
一定是你电路接错了 !
或是 pin 搞錯了

好的 我试试 谢谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-26 09:29:04 | 显示全部楼层
林定祥 发表于 2015-4-25 18:10
按钮按下是“High”,还是“low”请检查电路,并与程序相对应。

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

使用道具 举报

 楼主| 发表于 2015-4-26 09:30:15 | 显示全部楼层
tsaiwn 发表于 2015-4-25 18:55
代码没问题
一定是你电路接错了 !
或是 pin 搞錯了

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

使用道具 举报

发表于 2015-4-26 18:13:54 | 显示全部楼层
蓝色骨骨头 发表于 2015-4-26 09:30
确实可以了 我想问一下 如果我用两个按键控制两盏灯 也想达到这样的效果 该怎么改代码的 我是相当于复制了 ...

因为你用 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
因为你用 while( ) 等到不是 HIGH (就是按了按钮)才会离开 while
所以, 变成只要不按就会被卡住在该 whi ...

好的 谢谢大神指点哈
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 00:40 , Processed in 0.040431 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表