实验简介
使用两个按键,分别控制两个LED灯的 点亮与 关闭。
按一下,亮,再按一下灭,走起......
先说明一下4脚按键开关的工作原理
示例效果
BOM表
Arduino Uno * 1
LED *2(各什么颜色你喜欢就好)
4脚按键开关 *2
面包板 *1
跳线若干
接线图
程序源码
本程序能分别通过按键控制LED灯的亮或者灭,但无法实现同时亮或者灭。
如果有更好的方法,请告知,谢谢亲。
程序打包下载:/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);
(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);//等待按键松手
}
(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);
}
(digitalRead(LED2));
}
if(KEY_NUM2 == 1)
{
digitalWrite(LED2, !digitalRead(LED2));
}
}