Arduino 用两个按键分别控制两个LED灯点亮
2016-10-26 15:28
3723 查看
实验简介
使用两个按键,分别控制两个LED灯的 点亮 与 关闭 。按一下,亮,再按一下灭,走起......
先说明一下4脚按键开关的工作原理
示例效果
BOM表
Arduino Uno * 1LED *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)); } }
相关文章推荐
- MCU学习4--利用一个按键控制两个LED与防抖
- 基于FPGA的按键控制4盏LED灯循环左移点亮
- 8051汇编 8个按键分别控制8个LED
- STM32_外部中断之按键控制点亮LED灯
- Arduino应用笔记(二)Matlab控制Arduino点亮一个LED灯
- arduino学习系列——按键控制LED灯
- Arduino Leonardo 按键控制LED亮与灭
- 树莓派通过I2C总线控制Arduino点亮LED灯
- Arduino应用笔记(三)这一篇和(二)方法不同:Matlab利用串口通信控制Arduino点亮LED
- 从ARM裸机看驱动之按键中断方式控制LED(二)
- TQ210_裸机编程(二)——按键控制LED灯
- ARM裸机程序开发——按键控制LED灯
- 控制两个、LED灯交替闪烁【警灯】
- arm wince 如何点亮ep9315的两个led灯
- 基于mini2440的按键中断控制LED(裸机代码)
- 1.Arduino点亮LED灯
- 外部按键 控制 LED 中断 (参考 http://www.oschina.net/question/565065_115196?sort=time )
- 2812的IO口控制--LED点亮
- arduino中使用光敏电阻控制LED灯
- 2、按下按键S1控制LED1.LED2.LED3实现跑马灯效果(CC2540开发寄存器设置)