qww276414529 发表于 2015-4-21 11:07:12

各位大神。求助

我想实现一个按键控制LED 灯的开,闪烁,关。我想设定一个变量,每按一次按键,变量+1,这样就能对应控制LED灯了。哪位大神能帮我实现下,谢谢了

qww276414529 发表于 2015-4-21 11:20:24

麻烦针对变量的设定,帮我讲解下可以么 。一个小白。

zoologist 发表于 2015-4-21 12:25:23

建议你找本书从头看看

一般来说,如果你有具体问题这里可能找到答案

但是如果你什么都不懂,是不会有人给你从头讲的

qww276414529 发表于 2015-4-21 13:34:55

int e;
void setup ()
{
pinMode(4,INPUT);               //将4号数字口设置为输入状态
pinMode(12,OUTPUT);               //12号数字口设置为输出
digitalWrite(12,1);
int n;
}

void loop()
{
int n =digitalRead(4);//创建一个变量n,将4号数字口的状态采集出来赋值给他。
delay(10);
if (n==1) //判断n是否为高电平,按键按下。
{
    { e=0;
      e=e+1;                         //每次累加值为1
    if (e>=2)
   {
      e=0;
    }      
    }

if (e==1)
    { while(1)
{
    delay(500);
    digitalWrite(12,1);
    delay(500);
    digitalWrite(12,0);
}
    }
if (e==2)
{ while(1)
{
    delay(2000);
    digitalWrite(12,1);
    delay(2000);
    digitalWrite(12,0);
}
}
}
}

以上的程序 我写入后,按下按键,LED只能执行delay(500);的闪烁。我想让按键按一下,LED执行delay(500);的闪烁。再按下执行delay(2000);的闪烁。这样一直循环。各位大神给我指导下,哪里有问题,谢谢了。

   

qww276414529 发表于 2015-4-21 13:36:18

zoologist 发表于 2015-4-21 12:25 static/image/common/back.gif
建议你找本书从头看看

一般来说,如果你有具体问题这里可能找到答案


恩我基础不好,我把我写的程序放上面了,您能帮看下 ,有什么问题么

zoologist 发表于 2015-4-21 13:44:55

e=0;  <-------这里每次赋值为0了啊
      e=e+1;                         //每次累加值为1

qww276414529 发表于 2015-4-21 14:18:29

zoologist 发表于 2015-4-21 13:44 static/image/common/back.gif
e=0;  <-------这里每次赋值为0了啊
      e=e+1;                         //每次累加值为1

我想每按一次按键就累加一个,这样对么?
e=0;这个不需要么?

qww276414529 发表于 2015-4-21 14:18:45

zoologist 发表于 2015-4-21 13:44 static/image/common/back.gif
e=0;  <-------这里每次赋值为0了啊
      e=e+1;                         //每次累加值为1

我想每按一次按键就累加一个,这样对么?
e=0;这个不需要么?

女神去哪了 发表于 2015-4-21 14:54:11

你把e=0放在了if(n==1)的{}里面..就等于说每次按下按键 都会先使e=0 然后e++ 也就是说你的e只可能是1 永远加不到2

Super169 发表于 2015-4-21 15:48:44

qww276414529 发表于 2015-4-21 14:18 static/image/common/back.gif
我想每按一次按键就累加一个,这样对么?
e=0;这个不需要么?

或者你想想,e=0; e=e+1; 執行後會有什麼結果, 跟你直接寫 e = 1; 有什麼分別.
你真的只是想把 e 設定為 1 嗎?

Ultrady 发表于 2015-4-21 19:51:39

每次先等于0然后再加1.那么永远都是0+1,0+1,0+1。
你没学过高中数学的程序吗。。

Ultrady 发表于 2015-4-21 19:52:27

把等于0去掉才能往上加

qww276414529 发表于 2015-4-22 11:05:31

女神去哪了 发表于 2015-4-21 14:54 static/image/common/back.gif
你把e=0放在了if(n==1)的{}里面..就等于说每次按下按键 都会先使e=0 然后e++ 也就是说你的e只可能是1 永远加 ...

:D谢谢了 以后还请多指教

qww276414529 发表于 2015-4-22 11:07:29

Super169 发表于 2015-4-21 15:48 static/image/common/back.gif
或者你想想,e=0; e=e+1; 執行後會有什麼結果, 跟你直接寫 e = 1; 有什麼分別.
你真的只是想把 e 設定為 ...

谢谢了,本人小白,以后还请大家多指教

qww276414529 发表于 2015-4-22 11:08:15

Ultrady 发表于 2015-4-21 19:52 static/image/common/back.gif
把等于0去掉才能往上加

:D学习了以后还请多指教
页: [1] 2
查看完整版本: 各位大神。求助