查看: 163|回复: 3

[已解决] 小白求助 arduino按键切换4个灯

[复制链接]

该用户从未签到

发表于 2019-1-6 21:32 | 显示全部楼层 |阅读模式
小白刚开始玩,想实现的效果是一个按键切换4个灯亮灭
现在情况是按键不松开,灯会一直走,不会停,要怎么修改才能按住不走:(
代码如下
const int LED1=4;
const int LED2=5;
const int LED3=6;
const int LED4=7;
const int KEY=2;
int num=0;
void setup()
{
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  pinMode(LED4,OUTPUT);
  pinMode(KEY,INPUT);
  digitalWrite(KEY,HIGH);
  digitalWrite(LED1,0);
  digitalWrite(LED2,0);
  digitalWrite(LED3,0);
  digitalWrite(LED4,0);
}

void loop()
{
    int val=digitalRead(KEY);
    if(val==0)
    {
      delay(50);
      if(val==0)
      {
         num++;
         delay(50);
      }
    }  
     if(num==1)
      {
        digitalWrite(LED1,1);
        digitalWrite(LED2,0);
        digitalWrite(LED3,0);
        digitalWrite(LED4,0);
      }
      if(num==2)
      {
        digitalWrite(LED1,0);
        digitalWrite(LED2,1);
        digitalWrite(LED3,0);
        digitalWrite(LED4,0);
      }
      if(num==3)
      {
        digitalWrite(LED1,0);
        digitalWrite(LED2,0);
        digitalWrite(LED3,1);
        digitalWrite(LED4,0);
      }
      if(num==4)
      {
        num=0;
        digitalWrite(LED1,0);
        digitalWrite(LED2,0);
        digitalWrite(LED3,0);
        digitalWrite(LED4,1);
      }
}
  • TA的每日心情
    无聊
    2019-1-14 08:00
  • 签到天数: 34 天

    [LV.5]常住居民I

    发表于 2019-1-7 02:48 | 显示全部楼层
    本帖最后由 t3486784401 于 2019-1-7 02:49 编辑

    在检测到按键时,等待至按键释放就行了:

    1.    if(val==0)
    2.    {
    3.      delay(50);
    4.      if(val==0)
    5.      {
    6.         num++;
    7.         while(digitalRead(KEY)==0)
    8.         {
    9.          delay(50);
    10.         }
    11.      }
    12.    }
    复制代码

  • TA的每日心情

    2019-1-16 10:49
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2019-1-7 08:34 | 显示全部楼层
    中断 加上升沿
  • TA的每日心情
    开心
    2019-1-16 08:13
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2019-1-11 10:00 | 显示全部楼层
    二楼的是正解
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    关于arduino编译问题
    关于arduino编译问题
    编译示例程序老是这个问题,换了电脑都不行
    莫名乱码 —— Arduino+RFID-RC522 读写实验
    莫名乱码 —— Arduino+RF
    目标:想把自己房间门改成感应门锁 器材:Arduino Uno (淘宝七星虫LY-F2)、RFID-RC
    [blinker开发实战2]数据反馈
    [blinker开发实战2]数据反
    [md] ### 添加DIY组件 在编辑模式下,点击按键进入编辑组件页面,可以看到 **按键
    用Arduino控制PS2无线手柄为什么一直连接不上
    用Arduino控制PS2无线手柄
    用Arduino UNO板 连接PS2手柄接收器,为什么指示灯已经显示对接上了,但是打开串口监
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表