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

2014-01-161.9万
AI 快速预览详细 收起
本文介绍了如何将普通按键变为自锁按键的Arduino编程方法。首先解释了自锁按键的概念,然后讨论了为什么需要使用自锁按键,并提供了一种改进的方法来解决普通按键持续按下导致灯闪烁的问题。通过设置按键松开标志位,实现了按一下改变一次状态的效果。文章还提供了详细的代码示例,帮助读者理解和实现这一功能。


想让普通按键变为自锁按键,首先我们要解决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









创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
heinau
heinau
炮姐威武!!!!就是这跟自锁按键有啥米关系?
诩
回复heinau
好像没有
何处不江南
何处不江南
作者
回复heinau
这关乎论坛界的一个传说。。。
nemon
nemon
我是来找沙发的……
何处不江南
何处不江南
作者
回复nemon
支持一个也不错啊
- 没有更多了 -