13237浏览
查看: 13237|回复: 5

[进阶] Arduino编程之----如何让你的普通按键变为自锁按键

[复制链接]
本帖最后由 何处不江南 于 2014-1-16 18:56 编辑

想让普通按键变为自锁按键,首先我们要解决3个问题。

1.什么是自锁按键?
首先理解下什么叫自锁按键。放张图,一目了然
Arduino编程之----如何让你的普通按键变为自锁按键图1
file:///C:/Users/first%20user/AppData/Local/YNote/Data/yushigengyu%40qq.com/ccfb7020d1fb44239dc2fc0bb9ae1911/clipboard.png

自锁按键即按下去就锁住,不会自动弹起来,再按一次才会弹起来的一种按键,和开关非常相似。

2.为什么要使用自锁按键?即什么情况下我们要用自锁按键?
自锁按键使用范围很广。

如通常我们开关灯,开关电源,开关继电器等,都是希望我按一下按键,它们改变一下状态,从关闭变为开启,或者从开启作为关闭。
而不是按下开启,松开关闭。

3.怎么把普通按键变为自锁按键?

普通的做法如下:
读取按键状态。
若按键按下,则改变灯状态(开->关,关->开)。
如此循环。

那么以上做法有什么优缺点呢?
优点,代码简单,逻辑简单。
缺点,当按键持续按下时,你就发现灯一直在闪啊闪。。。

更好的做法:
那么什么是更好的做法呢,如下:
设置按键松开标志位
读取按键状态,若按键松开,则将按键松开标志位置为真。
若按键松开标志位为真,同时按键按下,则改变灯的状态,并把按键松开标志位置为假。否则不改变状态。
如此循环。

该代码的优点就是解决了普通方法的一直闪啊闪的问题。做到了按一下改变一次状态。
现在贴出代码。

  1. // set pin numbers:
  2. const int buttonPin = 2;       // the number of the pushbutton pin
  3. const int ledPin = 13;           // the number of the LED pin
  4. // variables will change:
  5. int buttonState = 0;              // variable for reading the pushbutton status
  6. bool buttonStateFlag =true;
  7. bool ledStateFlag=false;
  8. void setup()
  9. {
  10.   // initialize the LED pin as an output:
  11.   pinMode(ledPin, OUTPUT);
  12.   // initialize the pushbutton pin as an input:
  13.   pinMode(buttonPin, INPUT);
  14. }
  15. void loop()
  16. {
  17.   buttonState = digitalRead(buttonPin);
  18.   if (buttonState == HIGH&&buttonStateFlag==true)
  19. {
  20.     ledStateFlag=!ledStateFlag;
  21.     digitalWrite(ledPin, ledStateFlag);
  22.     buttonStateFlag=false;
  23.   }
  24.   else if(buttonState == LOW)
  25. {
  26.     buttonStateFlag=true;
  27.   }
  28. }
复制代码



说完发图一副,镇楼。
Arduino编程之----如何让你的普通按键变为自锁按键图2








nemon  中级技匠

发表于 2014-1-17 08:49:44

我是来找沙发的……
回复

使用道具 举报

何处不江南  初级技匠
 楼主|

发表于 2014-1-17 11:51:23

nemon 发表于 2014-1-17 08:49
我是来找沙发的……

支持一个也不错啊
回复

使用道具 举报

heinau  高级技匠

发表于 2014-1-17 11:52:43

炮姐威武!!!!就是这跟自锁按键有啥米关系?
回复

使用道具 举报

何处不江南  初级技匠
 楼主|

发表于 2014-1-17 11:54:49

heinau 发表于 2014-1-17 11:52
炮姐威武!!!!就是这跟自锁按键有啥米关系?

这关乎论坛界的一个传说。。。
回复

使用道具 举报

 初级技匠

发表于 2022-4-27 08:44:20

heinau 发表于 2014-1-17 11:52
炮姐威武!!!!就是这跟自锁按键有啥米关系?

好像没有        
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail