极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17806|回复: 1

[翻译]]Arduino自带范例Digital之Debounce

[复制链接]
发表于 2012-11-18 17:38:07 | 显示全部楼层 |阅读模式
本帖最后由 迷你强 于 2012-11-18 21:51 编辑

电路原理图:




  1. /*
  2. 翻译:tom
  3. 时间:2012年11月18日
  4. IDE版本号:1.01
  5. 发表地址:www.geek-workshop.com
  6. 翻译说明: 根据arduino自带的范例进行翻译,可能根据实际的需要略作修改

  7. */


  8. /*
  9. Debounce 防反跳

  10. 每次输入端从低电平至高电平(例原因是按纽按下),
  11. 输出端跟着从低至高或是从高至低.
  12. 这存在一个最小延时在两次按下防反跳电路.(例如 忽略杂声音)

  13. 电路和:
  14. *LED 连接13号端至地线
  15. *按纽连接2号端
  16. *10K 电阻连接2号端至地线

  17. * 备注: 在多数Arduion板,那里已经有一个LED在板上连接着13号端,所以你不需要任何额外的led为这个例子.


  18. created 21 November 2006
  19. by David A. Mellis
  20. modified 3 Jul 2009
  21. by Limor Fried


  22. http://www.arduino.cc/en/Tutorial/Debounce
  23. */

  24. // 不变常量
  25. // 设置端口:
  26. const int buttonPin = 2;     // 定义buttonPin端口为2号数字端
  27. const int ledPin = 13;      // 定义发光二极管端口为13号

  28. // 变量将改变
  29. int ledState = HIGH;         //设LED端输出状态ledState为高
  30. int buttonState;             // 当前按纽读取值buttonState从输入端口
  31. int lastButtonState = LOW;   //上次输入端的状态值lastButtonState为低
  32. //下列变量是常整型因为时间,是毫秒级
  33. //将会迅速变成一个很大的数字超过短整型的储存范围
  34. long lastDebounceTime = 0;  //在上次时间输出端被按下
  35. long debounceDelay = 50;    //防反跳时间:增加中频输出

  36. void setup() {
  37.   pinMode(buttonPin, INPUT);
  38.   pinMode(ledPin, OUTPUT);
  39. }

  40. void loop() {

  41.   //按纽按下时将值赋给reading
  42.   int reading = digitalRead(buttonPin);

  43.   //检查如果刚按下了按纽
  44.   //(例如 输入从低至高电平),你已经等待
  45.   //足够长自从上次按下至忽略任何杂声

  46.   //如果开关状态改变,由于噪声或按下
  47.   if (reading != lastButtonState) {
  48.     //重设双精度计时器               

  49.     lastDebounceTime = millis();
  50.   }

  51.   if ((millis() - lastDebounceTime) > debounceDelay) {
  52.     //无论读取是什么,它比防反跳时间长,
  53.     //所以认为它是有效电流
  54.     buttonState = reading;
  55.   }

  56.   //设置LED使用中的状态
  57.   digitalWrite(ledPin, buttonState);
  58.   //储存reading,下次通过循环,它就是上次按纽状态
  59.   lastButtonState = reading;
  60. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-11-18 19:53:28 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 13:52 , Processed in 0.047295 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表