Introduction: 如此簡單 MicroPython - 按鈕開關 Vs 彈跳現象
*** 只須加上 2~3 行以內的指令, 就能解決按鈕開關的彈跳現象, 精準的判讀開關的高低電位值 ***
Step 1: 認識按鈕的 Debounce 彈跳現象
在使用按鈕開關時, 最令人頭痛的問題就是它的彈跳現象。由於機械式按鈕在被按下與釋放的瞬間, 其接觸點屬於機械結構的接觸, 因此通電與斷電的瞬間會有一段電位不穩定的狀態存在,因此若不等待彈跳現象的消失才作業, 就常常會有硬體控制上的問題, 尤其是計數的設計上更不容許出現次數計算的錯誤。
因此, 這個 MyKitSwitch 的函式庫, 就是方便解決這個問題而設計的。
Step 2: 下載與安裝函式庫
1. 首先, 必須先上傳 MyKitSwitch 函式庫 到 MCU 板子上。
***如果您尚不知如何上傳檔案至 MCU 時, 建議您可先參考我的另一篇 "如此簡單 MicroPython - ESP8266/ESP32 MCU 檔案管理".
Step 3: 範例:偵測按鈕開關的狀態, 被按下? 還是放開?
from machine import Pin
from MyKitSwitch import mySwitch
led = Pin(2, Pin.OUT)
my_sw = mySwitch(12)
while True:
if sw.pressed() and sw.getStatus() == 1:
led.value(0)
print("Button pressed and LED value is ", led.value())
if sw.released() and sw.getStatus() == 0:
led.value(1)
print("Button released and LED value is ", led.value())
time.sleep_ms(100)
*** 您可下載此範例程式原始碼 [HERE] ***
Step 4: 等待按鈕被按下直至放開才作業
from machine import Pin
from MyKitSwitch import mySwitch
led = Pin(2, Pin.OUT)
sw = mySwitch(12)
while True:
if sw.pressReleased():
led.value(not led.value())
print("Pressed period in ms is ", sw.getPressed())
*** 您可下載此範例程式原始碼 [HERE] ***
Step 5: 如此而已, 就是這麼簡單, 希望能對你有一點點的幫助 !
作者:Yungger 勇哥
如果覺得此文對您有幫助, 也願意鼓勵勇哥的繼續創作, 點此加油一下 😘 😘 !!