极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 31419|回复: 9

Arduino小实验-按钮切换LED

[复制链接]
发表于 2012-6-2 14:50:28 | 显示全部楼层 |阅读模式
本帖最后由 friskit 于 2012-11-11 17:21 编辑

刚入手了Arduino,发现这玩意真是值得一折腾哈哈
做了个小东西



左右两个按钮分别控制当前亮的灯的位置。

代码如下:

  1. #define LED_NUMBER 5        //定义LED总数量

  2. int Left_Switch = 12;       //向左切换按键引脚编号
  3. int Right_Switch = 11;      //向右切换按键引脚编号
  4. boolean isPressed = false;  //表明按钮是否被按下
  5. int LED[LED_NUMBER]={3,5,7,8,10}; //每个LED的引脚

  6. int state=0;                      //表示现在点亮的等的编号
  7. void setup(){
  8.   for(int i=0;i<LED_NUMBER;i++){
  9.     pinMode(LED[i],OUTPUT);       //初始化LEG的工作模式,是OUTPUT
  10.   }
  11.   pinMode(Left_Switch,INPUT);     //初始化左按钮的工作模式,是INPUT
  12.   pinMode(Right_Switch,INPUT);    //初始化右按钮的工作模式,是INPUT
  13.   digitalWrite(LED[state],HIGH);  //写入初始状态,(编号为state的等亮)
  14. }

  15. void loop(){
  16.   int Right=digitalRead(Right_Switch);    //读取左按钮数值
  17.   int Left=digitalRead(Left_Switch);      //读取右按钮数值
  18.   
  19.   if(!isPressed&&Left==HIGH){             //如果此时不是按下状态,且左按钮被按下(isPressed是为了防止按住按钮产生连续按动)
  20.     digitalWrite(LED[state],LOW);         //把现在的灯关掉
  21.     state=(state+1)%LED_NUMBER;           //算算应该哪个灯亮
  22.     digitalWrite(LED[state],HIGH);        //点亮这个等
  23.     isPressed = true;                     //把现在的状态设置成已经按下状态
  24.   }

  25.   
  26.   if(!isPressed&&Right==HIGH){            //这一部分刚好跟上面相反
  27.     digitalWrite(LED[state],LOW);
  28.     state=(state+4)%LED_NUMBER;
  29.     digitalWrite(LED[state],HIGH);
  30.     isPressed = true;
  31.   }
  32.   
  33.   if(Left==LOW&&Right==LOW){              //如果都是低相当于没有按钮按下
  34.     isPressed=false;                      //置isPressed为假
  35.   }
  36. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-6-4 08:08:42 | 显示全部楼层
e,和ardroid有什么关系~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-6-4 21:55:31 | 显示全部楼层
海神 发表于 2012-6-4 08:08
e,和ardroid有什么关系~~~

呃写错了!arduino。。。。。安卓程序员表示android说顺嘴了。。。。
回复 支持 反对

使用道具 举报

发表于 2012-11-11 00:42:04 | 显示全部楼层
不错的程序贴啊,问一下,!isPressed这个是什么意义呢?
回复 支持 反对

使用道具 举报

发表于 2012-11-11 09:16:17 | 显示全部楼层
程序没注释啊。。。。我等小白看不懂啊。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-11 17:21:43 | 显示全部楼层
迷你强 发表于 2012-11-11 09:16
程序没注释啊。。。。我等小白看不懂啊。。。

加上注释了……
回复 支持 反对

使用道具 举报

发表于 2013-1-8 19:43:43 | 显示全部楼层
请问这个图什么怎么做的呀?
回复 支持 反对

使用道具 举报

发表于 2013-12-15 14:36:42 | 显示全部楼层
小菜鸟拜服大侠
int LED[LED_NUMBER]={3,5,7,8,10}; //每个LED的引脚 数组定义一句就完事

if(!isPressed&&Left==HIGH){  //探读取防抖一次完成
}
回复 支持 反对

使用道具 举报

发表于 2014-1-9 22:16:09 | 显示全部楼层
friskit 发表于 2012-6-4 21:55
呃写错了!arduino。。。。。安卓程序员表示android说顺嘴了。。。。

楼主软硬皆施,好强悍!
回复 支持 反对

使用道具 举报

发表于 2014-11-16 04:14:11 | 显示全部楼层
感谢楼主分享,标记一下
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-6 07:02 , Processed in 0.047027 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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