2016年6月8日 星期三

利用Arduino幫我們玩遊戲吧!自動按鍵

在一場激烈征戰的同時,我總是會希望有多一隻手,可以幫我按按鈕!

這個項目起源是這樣來的,我們家的小孩都喜歡玩線上遊戲。
現在的線上遊戲,講求自由度!所以各式各樣的招式,經過你的巧手分配後,有可能就會產生不一樣的結果。(有時可以逆轉勝啊!)




因此我就想到這個軟體X-Mouse Button Control
它可以設定巨集,可以依照你的想法,把按鍵排列組合一一輸出,
不過Lag總是成為壓死玩家的關鍵因素,當然也會影響這個軟體,輸出不聽使喚~

前一陣子玩Arduino剛好有玩到keyboard這個功能,因此這裡就來試試,用Arduino當成我的外掛鍵盤。

Arduino有兩種玩法

  1. 使用Arduino R3 的 UFD模式來模擬成電腦
  2. 使用Arduino Leonardo 或是 Arduino Micro / Pro Micro 的板子來執行keyboard程式



第一種方式,我手上的板子一直測試不成功,不知道為什麼?
可以進入UDF但是沒有輸出反應!?弄半天我就放棄了 
(時間應該留給我們的idea上,而不是浪費在故障排除啊!)



所以我直接使用第二種方式,先買了一塊Pro Micro直接來玩。 
(反正日後不玩了,還可以作為其他使用,完全不浪費!)




**如果你不想思考 怎麼寫sketch可以參考我的,直接拿去改,或是直接用,在最下面!**

 

思考需要什麼功能?

  • 要可以各自設定各個按鈕間的間隔時間(需要一個選單是專門設定時間)
  • 要可以設定要輸出哪個字(需要一個選單是專門設定文字)
  • 要可以設定輸出幾個字後才停止(需要一個選單是專門設定字數)


綜合以上,所以需要三個選單+一個主要畫面




遇到的問題點


第一個遇到的困難就是,為什麼編譯不過?編寫規範明明都依照標準走! 
(已經加入了keyboard程式庫,還是提醒說找不到? 一度懷疑是否為軟體問題)
原來是設定對應的板子,沒有先切換到Micro / Leonardo 所以編譯就失敗(IDE這麼聰明啊)




第二個遇到的問題,因為我想邊玩遊戲邊設定,所以我可能需要一個LCD來顯示現在的狀態。



但是怎麼輸出到UNO上面明明就正常,反之接到Pro Micro就失敗了呢?
原因在於1602LCD程式庫!
故障排除了三天,發現程式庫有問題,後來找到這個程式庫可以正確驅動。




第三個問題是,怎麼輸出第一個招式後,第二、第三卻使不出來,有時候又可以??
原來這就是lag造成的問題,若要解決,應該蠻簡單,連續送出單一個按鍵碼三次即可
(就好像你狂按某個按鍵一樣.....答答答答!!!!)

 

硬體實做

首先把i2c版本的 LCD線插入Arduino上,基本上有四條 正極 負極 SDA SCL



插入對應的腳位是 2(SDA) 3(SCL)


按鈕則必須先焊接在洞洞板上,其實若是使用麵包板的朋友,也可以直接插在麵包板上即可使用。


按鈕依序插入10 16 14 15號腳位(我的電路採用下拉電阻接法,下拉電阻是什麼?)

Play~

現在你只要把sketch載到Arduino上就ok啦!


好像真的還不錯呢!


注意以下事項:

  1. 板子必須是 Micro / Leonardo才能執行(因為晶片的關係)
  2. 上傳前,先確認好你的IDE是否有選到Micro / Leonardo的板子類別,設定正確才能成功
  3. 準備好1602 LCD 插入 2(SDA) 3(SCL)腳位
  4. 準備好四顆按鈕 分別插入 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 元

沒有留言:

張貼留言