【雕爷学编程】Arduino动手做(54)---大按键微动按钮模块3

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验五十四:按键模块 电子积木轻触开关 大按键微动按钮 兼容arduino 树莓派

在这里插入图片描述
程序四:开源仿真编程(Linkboy V4.2)

在这里插入图片描述
程序五开源图形编程(Mind+、编玩边学)

在这里插入图片描述

程序六开源图形编程(Mind+、编玩边学)

在这里插入图片描述
实验结果
未按下开关时,板载13脚输出低电平,板载LED熄灭;按下开关时,板载13脚输出高电平,板载LED点亮,实现了按键开关模块最基本的点动开关功能。

知识点:点动开关(Jog switch)
点动是相对于自锁而言。点动开关的特点就是,按下去后负载工作,松手后开关弹回(开关能自动复位),负载停止。通俗点讲就是按下开关动,松开就停点动是电动机控制方式中的一种。点动,由于在这一控制回路中没有自保,也没有并接其它的自动装置,只是按下控制回路的启动按钮,主回路才通电,松开启动按钮,主回路就没电了。

LED灯(LED lights)
LED灯是一块电致发光的半导体材料芯片,用银胶或白胶固化到支架上,然后用银线或金线连接芯片和电路板,四周用环氧树脂密封,起到保护内部芯线的作用,最后安装外壳,所以 LED 灯的抗震性能好。LED(Light Emitting Diode),发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个P-N结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED灯发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。LED可以直接发出红、黄、蓝、绿、青、橙、紫、白色的光。

程序七:利用按键开关模块自锁控制板载LED(开发板D13脚)
实验原理:不使用Arduino内置的上拉电阻,而是用电子器件构造一个外置下拉电阻环境(使用下拉电阻按键开关模块),实现双稳态的自锁开关功能。通过2号引脚判断按钮释放按下,按钮没按下时,2号引脚始终接受低电平信号,按钮按下时,接受到高电平信号。每当按钮按下时,反转板载LED的状态。

实验参考开源代码(Arduino):

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序七:通过按键开关模块,自锁(双稳态)控制板载LED灯的亮灭
  使用:下拉电阻按键开关模块
  接线:按键开关接D2
*/

void setup() {
    
    
  pinMode(LED_BUILTIN , OUTPUT);    //使用板载LED作为控制对象.
}

void loop() {
    
    
  if (HIGH == digitalRead(2))  //如果按钮2按下
{
    
        
    digitalWrite(LED_BUILTIN , LOW == digitalRead(LED_BUILTIN)   ?  HIGH  : LOW );
    //则反转 LED的状态
    delay(600);
  }
}

程序八开源仿真编程(Linkboy V4.2)
注:这里需使用上拉电阻按键开关模块

在这里插入图片描述

程序九开源图形编程(Mind+、编玩边学)
注:这里需使用上拉电阻按键开关模块,并接入A0脚。

在这里插入图片描述

知识点:自锁开关(Self-locking switch)
分机械自锁和电路自锁,机械自锁时,按钮按下去后即使松开,它也不弹回,这时负载一直工作。再按一下按钮,它就弹出,负载停止工作。电路自锁,按钮按下后,负载工作,松手后,按钮虽然弹出,但负载仍然工作,只有再按一下按钮,负载才停止工作。本实验实现了电子自锁开关的功能。

程序十:按键消抖控制LED亮灭(开发板D13脚)
实验说明:当你按下按钮的时候,可能期待的结果就是从1到0(从上拉电阻到按钮按下)的变化。但是实际操作起来可能会跟你想象的不太一样。若没有消除抖动的话,LED的开关就取决于抖动的次数是奇数还是偶数,存在偶然性。若使用延时消抖动,加了延时之后,200ms之内不会发生任何事,这么长的时间,无论抖动多少次都足够。使用按键开关切换LED的亮暗。也就是:按下按钮时,LED被点亮并保持长亮,若再按一次按钮,则关闭LED。还有一个有趣的副作用:如果按钮按住不松的话,LED会闪烁。

实验参考开源代码(Arduino):

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十:按键消抖,自锁控制LED亮灭(开发板D13脚)
  使用:上拉电阻按键开关模块
  接线:按键开关接D2
*/

int buttonPin = 2;  // 定义按键的针脚号为2
int ledPin = 13;  //定义LED输入针脚号为13号针脚
int ledValue = LOW;

void setup() {
    
    
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
}

void loop() {
    
    
  if (digitalRead(buttonPin) == LOW)
  {
    
    
    ledValue = !ledValue;  //判断当前按键是否为按下状态
    digitalWrite(ledPin, ledValue);
    delay(200);  //延时消抖
  }
}

程序十一开源仿真编程(Linkboy V4.2)
注:这里需使用上拉电阻按键开关模块

在这里插入图片描述
知识点:按键消抖(removing jo ggle for push button)
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理。按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,而且还是一个很“漫长”的过程,因为单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级。单片机如果在触点抖动期间检测按键的通断状态,则可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,从而引起误处理。因此,为了确保单片机对一次按键动作只作—次响应,就必须考虑如何消除按键抖动的影响。

在这里插入图片描述

抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。按键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。

常用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。软件消抖的基本原理是:在检测到有按键按下时,不是立即认定此键已被按下,而是执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍然保持闭合状态电平,若仍然保持,则确认该键真正被按下。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/132236024