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

因為我們家的小孩都喜歡玩線上遊戲,這個項目起源就是這樣來的!

現在的線上遊戲,講求自由度!所以各式各樣的招式,經過你的巧手分配後,有可能就會產生不一樣的結果。(有時可以逆轉勝啊!)

GameKeyboard_002.JPG

 

難易度

★★★★☆

 

因此我就想到這個軟體X-Mouse Button Control

它可以設定巨集,可以依照你的想法,把按鍵排列組合一一輸出,

不過Lag總是成為壓死玩家的關鍵因素,當然也會影響這個軟體,輸出不聽使喚~

 

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


(1)先選擇 Arduino 種類

因為arduino不同的型號,會搭不同的晶片,有些晶片會支援特定的功能,所以在開始之前,要先了解差異!!

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

GameKeyboard_011.JPG

 

第一種方式,我手上的板子一直測試不成功,不知道為什麼?

可以進入UDF但是沒有輸出反應!?弄半天我就放棄了 

(時間應該留給我們的idea上,而不是浪費在故障排除啊!)

 

所以我直接使用第二種方式,買了一塊Pro Micro直接來玩。 

(反正日後不玩了,還可以作為其他使用,完全不浪費!)

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

(2)需要什麼功能?

事先的規劃是必須的,因此後續在寫sketch時才不會覺的太困難,總之先求有在慢慢修改,完成了整體結構在慢慢加入其他的細節。

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

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

GameKeyboard_013.png

 

(3)實做

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

GameKeyboard_008.JPG

 

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

GameKeyboard_006.JPG

 

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

GameKeyboard_004.JPG

 

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

GameKeyboard_010.png

 

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

GameKeyboard_003.JPG

(4)遇到的問題點

在實做過程中,總是會遇到一些問題,以下是我遇到的狀況。

第一個問題 怎麼無法編譯?

GameKeyboard_012.png

▲為什麼編譯不過?編寫規範明明都依照標準走! 

(已經加入了keyboard程式庫,還是提醒說找不到? 一度懷疑是否為軟體問題)

 

▼原來是設定對應的板子,沒有先切換到Micro / Leonardo 所以編譯就失敗(IDE這麼聰明啊!)

GameKeyboard_001.png

 

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

 

但是怎麼輸出到UNO上面明明就正常,反之接到Pro Micro就失敗了呢?

故障排除了三天,發現原因在於1602LCD程式庫有問題

 

第三個問題 怎麼輸出第一個招式後,第二、第三卻使不出來,有時候又可以??

原來這就是lag造成的問題,若要解決,應該蠻簡單,連續送出單一個按鍵碼三次即可

(就好像你狂按某個按鍵一樣.....答答答答!!!!)

GameKeyboard_009.JPG


注意以下事項:

板子必須是 Pro Micro / Leonardo才能執行(因為晶片的關係)

上傳前,先確認好你的IDE是否有選到Pro Micro / Leonardo的板子類別,設定正確才能成功

準備好1602 LCD 插入 2(SDA) 3(SCL)腳位 (這是是Pro Micro 晶片支援的腳位,內定的不能改)

準備好四顆按鈕 分別插入 10 16 14 15腳位 (這個腳位其實是因為對應到sketch內所寫的號碼,可以依照你的寫法變更)

 

**附記

下拉電阻:主要用意是用於,當某個晶片的金屬針腳懸空時,可能會因為靜電或是電磁波關係,影響金屬腳上面的電壓,產生變化,但這不是我們要的結果。

 

使用一隻阻抗比較高的電阻,來把金屬腳導引到負極,所以就算針腳上有電也會慢慢流失,保持為低壓的狀態。

若使用的阻抗太低,就會變成短路,請大家注意喔!

一般使用 10k歐姆 或 100k歐姆

 

檔案下載

sketch 下載後使用Arduino IDE打開,並接好板子按下上傳即可。

 

需要的費用 (以下為約略計算)

Arduino Pro Micro*1 =250元

1602 LCD*1 (建議選擇i2C版本)=80元

i2c的模組=50元

微動按鍵*4 (可以依照個人喜好選擇)=4顆*1元 =4 元

 

arrow
arrow

    MakerKo 發表在 痞客邦 留言(3) 人氣()