Edison上程序开发——防抖开关

2015-10-231万
AI 快速预览详细 收起
本文介绍了如何使用Edison的button模块实现防抖开关。通过设置GPIO引脚并引入0.05秒的防抖延时,可以有效解决信号抖动问题。文章提供了详细的代码示例,帮助读者理解和实现这一功能。
涉及到一些机械结构的以及跟传感器交互的时候,就会涉及到一些“信号抖动”的概念,如果处理不当,不但影响作品的好坏,更重要的还会影响创客的心情。
本次我们用Edison的button模块来做一个最简单的防抖开关

  1. #!/usr/bin/python
  2. import mraa
  3. import time
  4. LED_GPIO = 5                   # The LED pin
  5. BUTTON_GPIO = 6                # The button GPIO
  6. led = mraa.Gpio(LED_GPIO)      # Get the LED pin object
  7. led.dir(mraa.DIR_OUT)          # Set the direction as output
  8. btn = mraa.Gpio(BUTTON_GPIO)   # Get the button pin object
  9. btn.dir(mraa.DIR_IN)           # Set the direction as input
  10. ledState = False   #LED 默认是关掉的
  11. led.write(0)
  12. def getButtonPress():
  13.     while 1:
  14.     if (btn.read() != 0):
  15.         continue
  16.     else:
  17.         # Detected a click
  18.         time.sleep(0.05)   # 防抖延时
复制代码
这里只是一个demo,来说明如何是由button以及如何做简单的信号防抖。在实际运用中,这样的一个死循环还是挺影响效率的,如果真有这样的需要,我们可以使用python的subprocess 等类,把循环等待放在一个子进程里面,这样不会影响主程序的执行。

Ok, another new skill GET !



创作许可协议

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

评论(3)
dsweiliang
dsweiliang
什么东东?能帮忙解决机械振动吗
孙毅
孙毅
作者
回复dsweiliang
应该解决不掉,这个只能解决信号的抖动。。。。
丄帝De咗臂
丄帝De咗臂
大圣
qq815076543322
qq815076543322回复孙毅
难以想象
孙毅
孙毅
作者
回复qq815076543322
恩,通讯的同学,竟然送了我一个大圣版的QQ公仔,胸前还真的有个铭牌,上面写着——大圣二字!
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
qq815076543322
qq815076543322
来教任务了啊
- 没有更多了 -