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 勇哥

如果覺得此文對您有幫助, 也願意鼓勵勇哥的繼續創作, 點此加油一下 😘 😘 !!