Arduino Leonardo 按键控制LED亮与灭
2014-04-19 22:11
856 查看
按键控制LED亮灭,试用两种方法,一种是最简单的开关,另一种就是用按键的IO来控制LED。
第一种方案:
按键为自锁按键,按键弹起是LED是灭的。
按键按下时LED点亮。
自锁按键的原理。
代码仍用点亮LED那段代码即可,IO给出高电平让LED常亮,自锁按键实现开光。
第二种方案
深蓝色非自锁按钮Free时有上拉电阻1k欧,按下时快速地拉低电平,检测到低电平,LED亮,再按一次,检测到低电平,LED翻转电平,熄灭。
浅蓝色自锁按钮如同方案一的功能,这里只是结合起来。
看看代码,也有三种写法:
第一种:
第二种:
第三种
第一种方案:
按键为自锁按键,按键弹起是LED是灭的。
按键按下时LED点亮。
自锁按键的原理。
代码仍用点亮LED那段代码即可,IO给出高电平让LED常亮,自锁按键实现开光。
第二种方案
深蓝色非自锁按钮Free时有上拉电阻1k欧,按下时快速地拉低电平,检测到低电平,LED亮,再按一次,检测到低电平,LED翻转电平,熄灭。
浅蓝色自锁按钮如同方案一的功能,这里只是结合起来。
看看代码,也有三种写法:
第一种:
#define LED 13 #define KEY 2 unsigned char KEY_NUM = 0; bool Flag_LED = 0; void setup() { pinMode(LED, OUTPUT); pinMode(KEY, INPUT); } void loop() { Scan_KEY(); //按键扫描 if(KEY_NUM == 1) //假如按键按下执行该程序 { KEY_NUM = 0; //清零标志位 Flag_LED = !Flag_LED; digitalWrite(LED,Flag_LED); //LED翻转 } } void Scan_KEY() //按键扫描 { if( digitalRead(KEY) == 0 ) //查看按键是否按下 { delay(20); //延时20ms,去抖动 if( digitalRead(KEY) == 0 ) //查看按键是否按下 { KEY_NUM = 1; while(digitalRead(KEY) == 0); //松手检测 } } }
第二种:
#define LED 13 #define KEY 4 int KEY_NUM = 0; //按键键值存放变量,不等于1说明有按键按下 void setup() { pinMode(LED,OUTPUT); //定义LED为输出引脚 pinMode(KEY,INPUT_PULLUP); //定义KEY为带上拉输入引脚 } void loop() { ScanKey(); //按键扫描程序,当按键按下时候,该子程序会修改KEY_NUM的值 if(KEY_NUM == 1) //是否按键按下 { digitalWrite(LED,!digitalRead(LED)); //LED的状态翻转 } } void ScanKey() //按键扫描程序 { KEY_NUM = 0; //清空变量 if(digitalRead(KEY) == LOW) //有按键按下 { delay(20); //延时去抖动 if(digitalRead(KEY) == LOW) //有按键按下 { KEY_NUM = 1; //变量设置为1 while(digitalRead(KEY) == LOW); //等待按键松手 } } }
第三种
#define LED 13 #define KEY 4 int KEY_NUM = 0; //按键键值存放变量,不等于1说明有按键按下 void setup() { pinMode(LED,OUTPUT); //定义LED为输出引脚 pinMode(KEY,INPUT_PULLUP); //定义KEY为带上拉输入引脚 } void loop() { if(digitalRead(KEY) == LOW) //有按键按下 { delay(20); //延时去抖动 if(digitalRead(KEY) == LOW) //有按键按下 { digitalWrite(LED,!digitalRead(LED)); //LED的状态翻转 while(digitalRead(KEY) == LOW); //等待按键松手 } } }
相关文章推荐
- Arduino 用两个按键分别控制两个LED灯点亮
- arduino学习系列——按键控制LED灯
- arduino入门学习实现语音控制LED灯
- Arduino 按键控制有源蜂鸣器
- linux驱动按键控制led灯
- STM32_外部中断之按键控制点亮LED灯
- ok6410学习笔记(16.按键中断控制led驱动)
- ARM裸机——FS2410按键控制LED灯(查询方式)
- arm汇编按键控制led灯
- 51 汇编语言编程:8个按键控制8个LED
- tq2440裸机程序. 按键控制LED灯.
- 树莓派 Learning 003 — GPIO 002 输入模式 — 按键控制LED
- 51 汇编语言编程:8个按键控制8个LED
- 从ARM裸机看驱动之按键中断方式控制LED(二)
- C51源代码--用按键控制led走马灯实例
- Tiny6410按键轮询方式控制LED的SD卡启动裸机程序
- mini2440 按键控制LED 驱动
- wince6.0 +S3C6410 中断处理例子(按键控制LED灯)
- arduino 控制led灯亮度强弱变化的经典代码