Arduino 用两个按键分别控制两个LED灯点亮

Arduino 用两个按键分别控制两个LED灯点亮_第1张图片

 

实验简介

使用两个按键,分别控制两个LED灯的 点亮 与 关闭 

按一下,亮,再按一下灭,走起......

 

先说明一下4脚按键开关的工作原理

Arduino 用两个按键分别控制两个LED灯点亮_第2张图片

 

 

示例效果

 

 

BOM表

Arduino Uno         * 1

LED                       *2(各什么颜色你喜欢就好)

4脚按键开关           *2

面包板                   *1

跳线若干

 

接线图

Arduino 用两个按键分别控制两个LED灯点亮_第3张图片

 

程序源码

 

本程序能分别通过按键控制LED灯的亮或者灭,但无法实现同时亮或者灭。

如果有更好的方法,请告知,谢谢
程序打包下载:https://u16460183.ctfile.com/fs/16460183-295923433

 

#define LED 3       //定义 led_1 I/O number is 3     
#define KEY 2       //定义 key_1 I/O number is 2

#define LED2 5      //定义 led_2 I/O number is 5
#define KEY2 4      //定义 key_2 I/O number is 4

int KEY_NUM1 = 0;    //key_1 value (按键键值存放变量,不等于1说明有按键按下)
int KEY_NUM2 = 0;    //key_2 value 

void setup()
{
  pinMode(LED,OUTPUT);			        //定义 led_1 I/O is OUTPUT
  pinMode(KEY,INPUT_PULLUP);        //定义 led_1 I/O is INPUT_PULLUP
  pinMode(LED2,OUTPUT);
  pinMode(KEY2,INPUT_PULLUP);		
  
  Serial.begin(300);
}

void loop()
{
  ScanKey();						//按键扫描程序,当按键按下时候,该子程序会修改KEY_NUM的值
  ScanKey2();
 
}

//按键1扫描程序
void ScanKey()						
{
  KEY_NUM1 = 0;							          //清空变量
  if(digitalRead(KEY) == LOW)			    //有按键按下
  {
    delay(20);						            //延时去抖动
    if(digitalRead(KEY) == LOW)		    //有按键按下
    {
      KEY_NUM1 = 1;				            //变量设置为1
      while(digitalRead(KEY) == LOW);	//等待按键松手
    }
    Serial.println(digitalRead(LED));//串口输出当前LED灯的状态
  }

  if(KEY_NUM1 == 1)              //是否按键按下
  {   
    digitalWrite(LED,!digitalRead(LED));    //LED的状态翻转
  }
  
}

//按键2扫描程序
void ScanKey2()					
{
  KEY_NUM2 = 0;						
  if(digitalRead(KEY2) == LOW)			
  {
    delay(20);					
    if(digitalRead(KEY2) == LOW)		
    {
      KEY_NUM2 = 1;				
      while(digitalRead(KEY2) == LOW);	
    }
      Serial.println(digitalRead(LED2));
  }

  if(KEY_NUM2 == 1)
  {
    digitalWrite(LED2, !digitalRead(LED2)); 
  }
}

 

你可能感兴趣的:(Arduino,系列实验)