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