本篇文章假設硬體沒發生機械彈跳(Bounce)訊號的情況下,如何處理彈跳情況(Debounce)請參考【Arduino教學】實作05-按鈕Debounce教學影片及[Arduino] 消除機械彈跳 – Debounce 與
探討:Button Debouncing (軟體作法)兩篇文章。
小時候玩紅白機(任天堂)時,用過連發把手與不連發把手,當時也不知道其中的原理,只覺得好玩,不過偶而會發現「連發」的功能有時也不好用啊,例如格鬥遊戲,需要「重擊」時,連發的功能完全無法用「重擊」攻擊對手阿 XD。那我們來了解一下按鍵的連發與不連發在積木上會是怎麼做。
觀念說明:
若要成為不連發的情況,需判斷按鍵「由放開狀態變成按下狀態」(下圖紅色箭頭所指的地方)才做動作。
mBlock範例:移動Panda
此範例使用mBlock上的兩個事件功能:當按下XXX鍵 與 當鬆開XXX鍵。而本文範例以上移鍵為例子。
壓住上移鍵時會連發的積木版本會像下圖
壓住上移鍵時不連發的的積木版本會像下圖
此程式觀念了解後,就可以應用到 Arduino 按鈕或開關相關的程式處理了。
連發就是「在重複判斷按鍵是否有按下時,按鍵正好有按下。」類似下圖的概念,所以只要壓住按鍵,程式就會幫按鍵做連發的動作。
若要成為不連發的情況,需判斷按鍵「由放開狀態變成按下狀態」(下圖紅色箭頭所指的地方)才做動作。
mBlock範例:移動Panda
此範例使用mBlock上的兩個事件功能:當按下XXX鍵 與 當鬆開XXX鍵。而本文範例以上移鍵為例子。
壓住上移鍵時會連發的積木版本會像下圖
壓住上移鍵時不連發的的積木版本會像下圖
此程式觀念了解後,就可以應用到 Arduino 按鈕或開關相關的程式處理了。
沒有留言:
張貼留言