2017年11月4日 星期六

鍵盤、按鈕、按鍵壓住時會連發嗎

本篇文章假設硬體沒發生機械彈跳(Bounce)訊號的情況下,如何處理彈跳情況(Debounce)請參考【Arduino教學】實作05-按鈕Debounce教學影片[Arduino] 消除機械彈跳 – Debounce 與 
探討:Button Debouncing (軟體作法)兩篇文章。

小時候玩紅白機(任天堂)時,用過連發把手與不連發把手,當時也不知道其中的原理,只覺得好玩,不過偶而會發現「連發」的功能有時也不好用啊,例如格鬥遊戲,需要「重擊」時,連發的功能完全無法用「重擊」攻擊對手阿 XD。那我們來了解一下按鍵的連發與不連發在積木上會是怎麼做。

觀念說明:
連發就是「在重複判斷按鍵是否有按下時,按鍵正好有按下。」類似下圖的概念,所以只要壓住按鍵,程式就會幫按鍵做連發的動作。

若要成為不連發的情況,需判斷按鍵「由放開狀態變成按下狀態」(下圖紅色箭頭所指的地方)才做動作。


mBlock範例:移動Panda

此範例使用mBlock上的兩個事件功能:當按下XXX當鬆開XXX。而本文範例以上移鍵為例子。

壓住上移鍵時會連發的積木版本會像下圖


壓住上移鍵時不連發的的積木版本會像下圖

此程式觀念了解後,就可以應用到 Arduino 按鈕或開關相關的程式處理了。