单片机交流
登录
直播中
王越建
7年用户
1464经验值
私信
关注
[问答]
请问一下怎样通过检测按键状态来控制LED灯亮灭?
开启该帖子的消息推送
按键开关
面包板
什么是按键开关?按键开关由哪几部分组成?按键开关有哪些优势?
怎样通过检测按键状态来控制LED灯亮灭,把LED的亮灭变成人为可控制的?
回帖
(1)
张云
2021-7-6 12:07:09
本篇我们主要介绍通过检测按键状态来控制LED灯亮灭,把LED的亮灭变成人为可控制的。
一、按键开关介绍
按键开关主要是指轻触式按键开关,也称之为轻触开关。按键开关是一种电子开关,属于电子元器件类,最早出现在日本[称之为:敏感型开关],使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实现通断的。
按键开关由嵌件、基座、弹片、按钮、盖板组成,其中防水类轻触开关在弹片上加一层聚酰亚胺薄膜。
按键开关有接触电阻荷小、精确的操作力误差、规格多样化等方面的优势,在电子设备及白色家电等方面得到广泛的应用如:影音产品、数码产品、遥控器、通讯产品、家用电器、安防产品、玩具、电脑产品、健身器材、医疗器材、验钞笔、雷射笔按键等等。
二、一个开关控制一个LED灯
1、所需器材
Uno R3开发板
配套USB数据线
面包板及配套连接线
1个LED灯
2个220Ω电阻W
1个轻触按键
2、面包板视图:
3、搭设说明:
见面包板示意图
4、Mixly程序:
5、程序编写:
int led=8;int aj=3;int value;void setup() { Serial.begin(9600); pinMode(led,OUTPUT); pinMode(aj,INPUT_PULLUP); //设置按键管脚上拉输入模式}void loop() { value=digitalRead(aj); Serial.println(value); delay(100); if(value==0) { digitalWrite(led,HIGH); } else { digitalWrite(led,LOW); } } 四、多个按键开关控制多个LED
1、所需器材
Uno R3开发板
配套USB数据线
面包板及配套连接线
2个LED灯
4个220Ω电阻W
2个轻触按键
2、面包板视图:
3、实现功能
按下红色的按键,红灯亮,绿灯灭
按下绿色的按键,绿灯亮,红灯灭
4、Mixly程序:
5、程序编写:
int led1=9;int led2=10;int anjian1=3;int anjian2=4;int value1,value2;void setup() { Serial.begin(9600); pinMode(led1,OUTPUT); pinMode(led2,OUTPUT); pinMode(anjian1,INPUT); pinMode(anjian2,INPUT);}void loop() { value1=digitalRead(anjian1); value2=digitalRead(anjian2); delay(300); if(value1==0) { digitalWrite(led1,HIGH); digitalWrite(led2,LOW); } if(value2==0) { digitalWrite(led1,LOW); digitalWrite(led2,HIGH); } } 五、实现按一下LED亮,再按一下LED灭
1、所需器材
Uno R3开发板
配套USB数据线
面包板及配套连接线
1个LED灯
2个220Ω电阻W
1个轻触按键
2、面包板视图:
3、Mixly程序:
4、程序编写:
int led=10;int aj=3;int num=0;void setup() {Serial.begin(9600);pinMode(led,OUTPUT);pinMode(aj,INPUT_PULLUP); }void loop() { int ajvalue=digitalRead(aj); Serial.println(ajvalue); delay(300); if(ajvalue==0) { num++; if(num%2==1) { digitalWrite(led,HIGH); } else { digitalWrite(led,LOW); } }} 六、函数介绍
digitalRead()
描述:读取指定数字引脚的值
函数原型:digitalRead(pin)
参数:要读取的数字引脚编号
返回值:HIGH(1)或LOW(0)
七、总结分析
通过digitalRead()函数来读取数字I/O引脚状态,然后根据状态去点亮或者熄灭LED灯。需要注意:
1、由于Arduino上电后,数字I/O管脚处于悬空状态,此时通过digitalRead()读到的是一个不稳定的值(可能是高,也可能是低)。所以通过pinMode()函数设置按键引脚为上拉输入模式。即使用内部上拉电阻,按键未按下时,引脚将为高电平,按键按下为低电平。
2、按键在按下的过程中,有一段接触未接触的不稳定过程,即按键的抖动。在判断按键状态时,通过delay()延时跳过抖动的不稳定状态,即软件上进行消抖。
本篇我们主要介绍通过检测按键状态来控制LED灯亮灭,把LED的亮灭变成人为可控制的。
一、按键开关介绍
按键开关主要是指轻触式按键开关,也称之为轻触开关。按键开关是一种电子开关,属于电子元器件类,最早出现在日本[称之为:敏感型开关],使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实现通断的。
按键开关由嵌件、基座、弹片、按钮、盖板组成,其中防水类轻触开关在弹片上加一层聚酰亚胺薄膜。
按键开关有接触电阻荷小、精确的操作力误差、规格多样化等方面的优势,在电子设备及白色家电等方面得到广泛的应用如:影音产品、数码产品、遥控器、通讯产品、家用电器、安防产品、玩具、电脑产品、健身器材、医疗器材、验钞笔、雷射笔按键等等。
二、一个开关控制一个LED灯
1、所需器材
Uno R3开发板
配套USB数据线
面包板及配套连接线
1个LED灯
2个220Ω电阻W
1个轻触按键
2、面包板视图:
3、搭设说明:
见面包板示意图
4、Mixly程序:
5、程序编写:
int led=8;int aj=3;int value;void setup() { Serial.begin(9600); pinMode(led,OUTPUT); pinMode(aj,INPUT_PULLUP); //设置按键管脚上拉输入模式}void loop() { value=digitalRead(aj); Serial.println(value); delay(100); if(value==0) { digitalWrite(led,HIGH); } else { digitalWrite(led,LOW); } } 四、多个按键开关控制多个LED
1、所需器材
Uno R3开发板
配套USB数据线
面包板及配套连接线
2个LED灯
4个220Ω电阻W
2个轻触按键
2、面包板视图:
3、实现功能
按下红色的按键,红灯亮,绿灯灭
按下绿色的按键,绿灯亮,红灯灭
4、Mixly程序:
5、程序编写:
int led1=9;int led2=10;int anjian1=3;int anjian2=4;int value1,value2;void setup() { Serial.begin(9600); pinMode(led1,OUTPUT); pinMode(led2,OUTPUT); pinMode(anjian1,INPUT); pinMode(anjian2,INPUT);}void loop() { value1=digitalRead(anjian1); value2=digitalRead(anjian2); delay(300); if(value1==0) { digitalWrite(led1,HIGH); digitalWrite(led2,LOW); } if(value2==0) { digitalWrite(led1,LOW); digitalWrite(led2,HIGH); } } 五、实现按一下LED亮,再按一下LED灭
1、所需器材
Uno R3开发板
配套USB数据线
面包板及配套连接线
1个LED灯
2个220Ω电阻W
1个轻触按键
2、面包板视图:
3、Mixly程序:
4、程序编写:
int led=10;int aj=3;int num=0;void setup() {Serial.begin(9600);pinMode(led,OUTPUT);pinMode(aj,INPUT_PULLUP); }void loop() { int ajvalue=digitalRead(aj); Serial.println(ajvalue); delay(300); if(ajvalue==0) { num++; if(num%2==1) { digitalWrite(led,HIGH); } else { digitalWrite(led,LOW); } }} 六、函数介绍
digitalRead()
描述:读取指定数字引脚的值
函数原型:digitalRead(pin)
参数:要读取的数字引脚编号
返回值:HIGH(1)或LOW(0)
七、总结分析
通过digitalRead()函数来读取数字I/O引脚状态,然后根据状态去点亮或者熄灭LED灯。需要注意:
1、由于Arduino上电后,数字I/O管脚处于悬空状态,此时通过digitalRead()读到的是一个不稳定的值(可能是高,也可能是低)。所以通过pinMode()函数设置按键引脚为上拉输入模式。即使用内部上拉电阻,按键未按下时,引脚将为高电平,按键按下为低电平。
2、按键在按下的过程中,有一段接触未接触的不稳定过程,即按键的抖动。在判断按键状态时,通过delay()延时跳过抖动的不稳定状态,即软件上进行消抖。
举报
更多回帖
rotate(-90deg);
回复
相关问答
按键开关
面包板
如何
通过
检测
按键
状态
来
控制
LED
灯
亮
灭
?
2021-10-28
2603
怎样
通过
按键
去
控制
LED
灯
的
亮
灭
2021-08-12
1998
请问
一下
STM32F407ZE是
怎样
通过
按键
去
控制
LED
灯
的
2021-11-25
1837
如何使用STM32固件库
通过
按键
来
控制
led
灯
的
亮
灭
?
2021-11-23
1002
怎样
通过
中断
来
实现开关
控制
LED
灯
的
亮
灭
呢
2022-01-20
1202
求大神指点
怎样
通过
两个开关
来
控制
LED
灯
的
亮
灭
?
2021-07-08
991
请问
一下
如何
通过
独立
按键
去
控制
led
的
亮
灭
?
2021-07-06
832
请问
一下
汇编语言是如何实现
按键控制
LED
亮
灭
的呢
2022-01-20
4421
如何
通过
触摸电容触摸
按键
完成
LED
灯
的
亮
灭
?
2021-11-04
2988
怎样
通过
I/O引脚输出的高低电平
来
控制
灯
的
亮
灭
和蜂鸣器的鸣叫呢
2022-01-19
3425
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分