您的位置:首页 > 产品设计 > UI/UE

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

2016-10-26 15:28 3723 查看

实验简介

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

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

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



示例效果



BOM表

Arduino Uno         * 1

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

4脚按键开关           *2

面包板                   *1

跳线若干

接线图



程序源码

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

如果有更好的方法,请告知,谢谢

#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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: