涉及到一些机械结构的以及跟传感器交互的时候,就会涉及到一些“信号抖动”的概念,如果处理不当,不但影响作品的好坏,更重要的还会影响创客的心情。
本次我们用Edison的button模块来做一个最简单的防抖开关:
01 #!/usr/bin/python
02
03 import mraa
04 import time
05
06 LED_GPIO = 5 # The LED pin
07 BUTTON_GPIO = 6 # The button GPIO
08 led = mraa.Gpio(LED_GPIO) # Get the LED pin object
09 led.dir(mraa.DIR_OUT) # Set the direction as output
10 btn = mraa.Gpio(BUTTON_GPIO) # Get the button pin object
11 btn.dir(mraa.DIR_IN) # Set the direction as input
12
13 ledState = False #LED 默认是关掉的
14 led.write(0)
15
16 def getButtonPress():
17 while 1:
18 if (btn.read() != 0):
19 continue
20 else:
21 # Detected a click
22 time.sleep(0.05) # 防抖延时
23
24
这里只是一个demo,来说明如何是由button以及如何做简单的信号防抖。在实际运用中,这样的一个死循环还是挺影响效率的,如果真有这样的需要,我们可以使用python的subprocess 等类,把循环等待放在一个子进程里面,这样不会影响主程序的执行。
文章来源:DF创客社区