极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20299|回复: 15

各位大神。求助

[复制链接]
发表于 2015-4-21 11:07:12 | 显示全部楼层 |阅读模式
我想实现一个按键控制LED 灯的开,闪烁,关。我想设定一个变量,每按一次按键,变量+1,这样就能对应控制LED灯了。哪位大神能帮我实现下,谢谢了
回复

使用道具 举报

 楼主| 发表于 2015-4-21 11:20:24 | 显示全部楼层
麻烦针对变量的设定,帮我讲解下  可以么 。一个小白。
回复 支持 反对

使用道具 举报

发表于 2015-4-21 12:25:23 | 显示全部楼层
建议你找本书从头看看

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

但是如果你什么都不懂,是不会有人给你从头讲的
回复 支持 反对

使用道具 举报

 楼主| 发表于 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);的闪烁。这样一直循环。各位大神给我指导下,哪里有问题,谢谢了。
  
   

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-21 13:36:18 | 显示全部楼层
zoologist 发表于 2015-4-21 12:25
建议你找本书从头看看

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

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

使用道具 举报

发表于 2015-4-21 13:44:55 | 显示全部楼层
e=0;  <-------这里每次赋值为0了啊
      e=e+1;                         //每次累加值为1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-21 14:18:29 | 显示全部楼层
zoologist 发表于 2015-4-21 13:44
e=0;  <-------这里每次赋值为0了啊
      e=e+1;                         //每次累加值为1

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

使用道具 举报

 楼主| 发表于 2015-4-21 14:18:45 | 显示全部楼层
zoologist 发表于 2015-4-21 13:44
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
回复 支持 反对

使用道具 举报

发表于 2015-4-21 15:48:44 | 显示全部楼层
qww276414529 发表于 2015-4-21 14:18
我想每按一次按键就累加一个,这样对么?
e=0;这个不需要么?

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

使用道具 举报

发表于 2015-4-21 19:51:39 | 显示全部楼层
每次先等于0然后再加1.那么永远都是0+1,0+1,0+1。
你没学过高中数学的程序吗。。
回复 支持 反对

使用道具 举报

发表于 2015-4-21 19:52:27 | 显示全部楼层
把等于0去掉才能往上加
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 11:05:31 | 显示全部楼层
女神去哪了 发表于 2015-4-21 14:54
你把e=0放在了if(n==1)的{}里面..就等于说每次按下按键 都会先使e=0 然后e++ 也就是说你的e只可能是1 永远加 ...

  谢谢了 以后还请多指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 11:07:29 | 显示全部楼层
Super169 发表于 2015-4-21 15:48
或者你想想,  e=0; e=e+1; 執行後會有什麼結果, 跟你直接寫 e = 1; 有什麼分別.
你真的只是想把 e 設定為 ...

谢谢了,本人小白,以后还请大家多指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 11:08:15 | 显示全部楼层
Ultrady 发表于 2015-4-21 19:52
把等于0去掉才能往上加

  学习了  以后还请多指教
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 08:45 , Processed in 0.057120 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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