只用一个按钮控制灯的亮和灭,与初学者分享下!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5935|回复: 0

只用一个按钮控制灯的亮和灭,与初学者分享下!

[复制链接]
发表于 2013-7-15 09:42 | 显示全部楼层 |阅读模式
本帖最后由 无为 于 2013-7-15 09:54 编辑

刚学习,根据珜羽 大大的按键控制灯程序做的一些改变,看了好多人都在想这个问题,却没有合适的程序,便自己动手写了一个,花了近一天的时间(刚学,请大家原谅下,呵呵),终于调试一个比较合格的程序了,发出来与初学者分享下,感谢zhangzn1981 同学的参考。以下为程序:注解为后加上的,大家可以去掉。
刚又想了一个方案,采用两个变量,因为一个变量在执行时会不停地转换。
int a = 0;                              //定义变量a=0
int b;                                     //定义变量b
void setup() {
  Serial.begin(9600);              //设定串口波特率,主要为后调试时查看a的值准备
  pinMode(2,INPUT_PULLUP);   //设定2脚为输入
  pinMode(13,OUTPUT);         //设定12脚为LED输出
}
void loop(){
  if(digitalRead(2)==0)              //判断2脚是否按下
  {
    delay(50);                            //延时50ms,防抖(其实最好的防抖为硬件,但手头上东西不够)
    if(digitalRead(2)==0)
    {
    b=!a;                                 //执行b=a非
    }
    if(digitalRead(2)==1)         //当按键松开时再将a的值判断输出(如果不这样,按键抖动会造成灯闪,
                                                  大家要有更好的方法可以更换,虽然这样还是会抖动,但要好很多了)
    {
    if(b == 0)                          //判断b值,如为0,则执行
    {
      digitalWrite(13,LOW);     //将13脚设定为低电平
      a = 0;                            //同时将a写为0
    }
    else                                  //如果a的值为1,则执行
    {
      digitalWrite(13,HIGH);    //将13脚设定为高电平
      a = 1;                           //同时将a写为1
    }
  Serial.println(a);                   //串口输出a的值,以方便调试程序。
  }
  }
}


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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-29 07:30 , Processed in 0.071451 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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