arduino两个个开关控制多个灯程序_Arduino 用两个按键分别控制两个LED灯点亮

时间:2025-03-29 09:19:38

实验简介

使用两个按键,分别控制两个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));

}

}