查看: 615|回复: 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-6-15 00:15
  • 签到天数: 43 天

    [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-4-23 14:20
  • 签到天数: 37 天

    [LV.5]常住居民I

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

    [LV.3]偶尔看看II

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

    本版积分规则

    热门推荐

    【项目】基于Arduino Nano的多功能桌面感应垃圾桶
    【项目】基于Arduino Nano
    基于Arduino Nano的多功能桌面感应垃圾桶随着大学生活不断往前迈进,宿舍桌面上的杂物
    智能物联网花盆
    智能物联网花盆
    打坏了一个费时5小时 3D打印的花盆,耗时22小时 下载:Kittenblock软件,安装、运
    呼吸灯实验
    呼吸灯实验
    本文节选自《Arduino程序设计基础》 之前的章节已经介绍了多种方法控制LED,但单是开
    为开发板 Generic ESP8266 Module 编译时出错
    为开发板 Generic ESP8266
    第一次尝试Arduino UNO软串口通信,编译一直通不过,错误信息 “开发板 generic (平
    Arduino Uno 无法上传程序
    Arduino Uno 无法上传程序
    原来可以正常使用的Arduino Uno 板子突然不能上传程序了,硬件驱动正常,TX和RX指示灯
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表