enzotim 发表于 2014-3-12 18:25:55

如何用循环记录按下按钮的次数?

我想达到的目的是;
按一次开关按钮,灯亮
再按一次开关按钮,灯灭
如此重复

用for循环如何实现?
digitalRead只能有HIGH 或者LOW
怎么用数字来表示?利用循环加一。。。
新手迷茫中

____消失灬 发表于 2014-3-12 19:42:06

引入一个变量    存储digitalRead的状态   用if判断这个变量的状态

shihaipeng04 发表于 2014-3-12 21:20:11

int 循环=1;
while (循环 == 1) //无条件循环
{
//读按键
if (按键==按下)
{
灯 = 翻转( 灯 )//
}
if (需要不循环了) {循环=0} //下次while 就不执行了
} // while 会一直循环

____消失灬 发表于 2014-3-12 21:34:22

shihaipeng04 发表于 2014-3-12 21:20 static/image/common/back.gif
int 循环=1;
while (循环 == 1) //无条件循环
{


soga其实我想说网站教程里面有
http://www.geek-workshop.com/thread-1048-1-1.html

enzotim 发表于 2014-3-13 00:28:36

____消失灬 发表于 2014-3-12 21:34 static/image/common/back.gif
soga其实我想说网站教程里面有
http://www.geek-workshop.com/thread-1048-1-1.html

哥们。。。我知道这个。。。但与我想达到的明显不同。。。

shihaipeng04 发表于 2014-3-13 01:46:46

____消失灬 发表于 2014-3-12 21:34 static/image/common/back.gif
soga其实我想说网站教程里面有
http://www.geek-workshop.com/thread-1048-1-1.html

我觉得楼主完全忽视了我的回复。看来和他沟通比较困难了。

哦我忘了在 灯翻转后面加一句,计数器+0.5了

____消失灬 发表于 2014-3-13 08:29:26

哦那个发错应该发这个的    那个得稍微改一下
http://www.geek-workshop.com/thread-1983-1-1.html

____消失灬 发表于 2014-3-13 08:38:18

你试试这个代码吧

int pbIn = 2;          // 定义输入信号引脚
int ledOut = A0;      // 定义输出指示灯引脚
int state = LOW;       // 定义默认输入状态
 
void setup()
{                
  // 设置输入信号引脚为输入状态、输出引脚为输出状态
  pinMode(pbIn, INPUT);
  pinMode(ledOut, OUTPUT);
}
 
void loop()                     
{
  state = digitalRead(pbIn);      //读取微动开关状态
 
  digitalWrite(ledOut, state);    //把读取的状态赋予LED指示灯
}

____消失灬 发表于 2014-3-13 08:38:48

shihaipeng04 发表于 2014-3-13 01:46 static/image/common/back.gif
我觉得楼主完全忽视了我的回复。看来和他沟通比较困难了。

哦我忘了在 灯翻转后面加一句,计数器+0.5了 ...

嘿嘿   还是给他写出来吧

savagego 发表于 2014-3-13 11:15:17

int pbIn = 2;          // 定义输入信号引脚
int ledOut = A0;      // 定义输出指示灯引脚
int state = LOW;       // 定义默认输入状态

void setup()
{               
// 设置输入信号引脚为输入状态、输出引脚为输出状态
pinMode(pbIn, INPUT);
pinMode(ledOut, OUTPUT);
}

int counter=0;//记录次数
byte m=0;//暂存状态

void loop()                     
{
state = digitalRead(pbIn);      //读取微动开关状态

if(state==1){//按下按钮
if(m==0){
digitalWrite(ledOut, HIGH);    //点亮
m=1;
}else{
digitalWrite(ledOut, LOW);    //灭
m=0;
}

counter++;//记录按钮次数

delay(500);

}



}

麽麽茶㊣ 发表于 2014-3-13 14:46:48

int count = 0;
void setup ()
{
pinMode(4,INPUT);               
pinMode(13,OUTPUT);
}
void loop()
{
int n =digitalRead(4);                  
if (n==HIGH)                           
{
    delay(1000);
    digitalWrite(13,HIGH);
    delay(5000);
    digitalWrite(13,LOW);
    count++;
}

enzotim 发表于 2014-3-13 23:56:32

shihaipeng04 发表于 2014-3-13 01:46 static/image/common/back.gif
我觉得楼主完全忽视了我的回复。看来和他沟通比较困难了。

哦我忘了在 灯翻转后面加一句,计数器+0.5了 ...

不是...只不过似乎用循环很麻烦。。。

shihaipeng04 发表于 2014-3-14 10:44:28

enzotim 发表于 2014-3-13 23:56 static/image/common/back.gif
不是...只不过似乎用循环很麻烦。。。

这也不应该用循环啊,循环的过程里不知道人什么时候会按下按钮,也许1秒,也许1年,程序怎么循环呢?这应该是事件驱动。面向对象都喊了10几年了,这才刚把goto给消灭掉。任重道远啊。

转角 发表于 2014-3-14 10:57:18

shihaipeng04 发表于 2014-3-14 10:44 static/image/common/back.gif
这也不应该用循环啊,循环的过程里不知道人什么时候会按下按钮,也许1秒,也许1年,程序怎么循环呢?这应 ...

只是太业余了,总有新手的
页: [1]
查看完整版本: 如何用循环记录按下按钮的次数?