在一場激烈征戰的同時,我總是會希望有多一隻手,可以幫我按按鈕!
這個項目起源是這樣來的,我們家的小孩都喜歡玩線上遊戲。現在的線上遊戲,講求自由度!所以各式各樣的招式,經過你的巧手分配後,有可能就會產生不一樣的結果。(有時可以逆轉勝啊!)
因此我就想到這個軟體X-Mouse Button Control
它可以設定巨集,可以依照你的想法,把按鍵排列組合一一輸出,
不過Lag總是成為壓死玩家的關鍵因素,當然也會影響這個軟體,輸出不聽使喚~
前一陣子玩Arduino剛好有玩到keyboard這個功能,因此這裡就來試試,用Arduino當成我的外掛鍵盤。
Arduino有兩種玩法
- 使用Arduino R3 的 UFD模式來模擬成電腦
- 使用Arduino Leonardo 或是 Arduino Micro / Pro Micro 的板子來執行keyboard程式
第一種方式,我手上的板子一直測試不成功,不知道為什麼?
可以進入UDF但是沒有輸出反應!?弄半天我就放棄了
可以進入UDF但是沒有輸出反應!?弄半天我就放棄了
(時間應該留給我們的idea上,而不是浪費在故障排除啊!)
所以我直接使用第二種方式,先買了一塊Pro Micro直接來玩。
(反正日後不玩了,還可以作為其他使用,完全不浪費!)
**如果你不想思考 怎麼寫sketch可以參考我的,直接拿去改,或是直接用,在最下面!**
思考需要什麼功能?
- 要可以各自設定各個按鈕間的間隔時間(需要一個選單是專門設定時間)
- 要可以設定要輸出哪個字(需要一個選單是專門設定文字)
- 要可以設定輸出幾個字後才停止(需要一個選單是專門設定字數)
▼綜合以上,所以需要三個選單+一個主要畫面
遇到的問題點
▲第一個遇到的困難就是,為什麼編譯不過?編寫規範明明都依照標準走!
(已經加入了keyboard程式庫,還是提醒說找不到? 一度懷疑是否為軟體問題)
原來是設定對應的板子,沒有先切換到Micro / Leonardo 所以編譯就失敗(IDE這麼聰明啊)
▲第二個遇到的問題,因為我想邊玩遊戲邊設定,所以我可能需要一個LCD來顯示現在的狀態。
但是怎麼輸出到UNO上面明明就正常,反之接到Pro Micro就失敗了呢?
原因在於1602LCD程式庫!
故障排除了三天,發現程式庫有問題,後來找到這個程式庫可以正確驅動。
第三個問題是,怎麼輸出第一個招式後,第二、第三卻使不出來,有時候又可以??
原來這就是lag造成的問題,若要解決,應該蠻簡單,連續送出單一個按鍵碼三次即可
(就好像你狂按某個按鍵一樣.....答答答答!!!!)
硬體實做
▼首先把i2c版本的 LCD線插入Arduino上,基本上有四條 正極 負極 SDA SCL
▼插入對應的腳位是 2(SDA) 3(SCL)
▼按鈕則必須先焊接在洞洞板上,其實若是使用麵包板的朋友,也可以直接插在麵包板上即可使用。
Play~
▼現在你只要把sketch載到Arduino上就ok啦!
▼好像真的還不錯呢!
注意以下事項:
- 板子必須是 Micro / Leonardo才能執行(因為晶片的關係)
- 上傳前,先確認好你的IDE是否有選到Micro / Leonardo的板子類別,設定正確才能成功
- 準備好1602 LCD 插入 2(SDA) 3(SCL)腳位
- 準備好四顆按鈕 分別插入 10 16 14 15腳位
**附記
下拉電阻:主要用意是用於,當某個晶片的金屬針腳懸空時,可能會因為靜電或是電磁波關係,影響金屬腳上面的電壓,產生變化,但這不是我們要的結果。
使用一隻阻抗比較高的電阻,來把金屬腳導引到負極,所以就算針腳上有電也會慢慢流失,保持為低壓的狀態。
一般使用 10k歐姆 或 100k歐姆
檔案下載
- sketch 下載後使用Arduino IDE打開,並接好板子按下上傳即可。
需要的費用(以下為約略計算)
- Arduino Pro Micro*1 =250元
- 1602 LCD*1 (建議選擇i2C版本)=80元
- i2c的模組=50元
- 微動按鍵*4 (可以依照個人喜好選擇)=4顆*1元 =4 元
沒有留言:
張貼留言