生活輔具-特製遊戲搖桿鍵盤DIY (3)

接下來就是接著做按鈕以及軟體開發兩個部分。
按鈕是隨便從光華商場購買的大按鈕,在買的時候並沒有想太多,原則上就是夠大就好,所以挑了下圖這種。

可是回來畫圖的時候才發現到這款按鈕高度太高了!!!
會長成這個樣子。


很明顯的在使用上可能會影響到手部的活動,不過東西都買了,就先試試看功能吧。反正所有的按鈕在線路以及軟體上應該未來都不需要更動,只要改變外殼跟硬體就好。


這個就是樣品。做好之後我鵝子是沒甚麼意見,不過我還是繼續找尋合適的按鈕。

接著就是軟體開發。
開發板我選用這塊,Arduino Leonardo,好處是可以直接在硬體上模擬成鍵盤或者滑鼠,而且是獨立的一個裝置,並不會跟原本的COM port衝突。而且接腳的數量也夠多,就不需要另外用一些取巧的辦法讓好幾個按鈕去共用同一隻腳。
硬體就是最基本款。


跟我家小朋友討論的結果,最後事先做兩個方向盤+六個按鈕。所以一共需要4+4+6=14個街腳。Leonardo接腳數量沒問題,但是如果未來還需要接上LCD或者SD卡的話就不夠了。

軟體部分在第二篇的時候,WASD模擬就已經寫好一部分,可是在製作按鈕的軟體,發現到"硬體彈跳"的問題很嚴重。
在Arduino官方入門教學裏頭的前幾篇,就有提到這個問題。
請參考 Arduino - Debounce
簡單的說,就是當開關在外要打開的一瞬間,並不是直接導通的。而是有一個很短的時間會開開關關的彈跳。可是Arduino的偵測速度實在太快,這樣的清況雖然只持續幾個毫秒,但是就會被判斷成重複按壓兩三次的情況。



之前在測試WASD的時候並沒有發現嚴重性,因為前後左右的時候,同一個按鈕在短時間多按幾次並不影響這個功能。
但是針對一些功能按鈕,影響就很大了。

所以花了一些時間研究,最後是採用一個名叫"Bource2"的第三方的library來處理。這個library好處是程式很簡潔。
這裡下載: https://github.com/thomasfredericks/Bounce-Arduino-Wiring/archive/master.zip
說明文件: https://github.com/thomasfredericks/Bounce-Arduino-Wiring/wiki
官方 github: https://github.com/thomasfredericks/Bounce-Arduino-Wiring

所以六個功能按鈕很快就完成了。
可是同樣的library用回到方向盤的時候問題就大了。不知道為什麼,這個library沒辦法處理多個按鈕同時按住的情況。無論如何,他都會把原本按住的按鈕放開後再處理下一個。所以方向盤的部分又回到幾本款。
最後還是得使用Arduino官方教學的方式處理,雖然程式碼拖得比較長,但是運作上還蠻符合需要的。

最後我們家小朋友也給出最後的功能規劃。
方向盤1的四個方向分別為: WASD
方向盤2則需要對應數字1-8,也就是說同時按住1跟3要能夠跳出2的意思。
而六個功能鍵則分別為: E、TAB、Space、Shift Toggle、F3、F3。

這邊說明一下Shift Toggle的意思是按一下等於把Shift按住。再按一下等於把Shift放開。

這個部分我先用麵包板處理,所以圖片就不貼了。


留言