ETH官方钱包

創作內容

2 GP

[妄想]自製家用中二機計畫...Part3[Arduino]

作者:吾輩はキツネである│2018-02-06 23:46:14│巴幣:4│人氣:644
(之後會弄一個懶人包)
測試了Arduino Leonardo性能,透過Keyboard函式庫就可以簡單做鍵盤輸入的部分
因為音G遊戲中有長壓,所以基本上使用 Keyboard.press() 及 Keyboard.release() 來做壓放的動作,所以相關的語法參照官方範例Button(在Digital分類裡),再搭配這裡個函數,就可以模擬出一個音G按鈕。
以四鍵的音樂遊戲(Ex: Stepmania)來說
整個程式碼範例如下
#include "Keyboard.h"
int intputs[] = {5, 6, 7, 8}; //輸入腳的編號
int states[4] = {0};  //按鈕狀況
char keys[4] = {'d', 'f', 'j', 'k'}; //四個按鍵

void setup() {
  Serial.begin(9600);
  for(int i=0; i<4; i++){ //設定接腳模式
    pinMode(intputs[i], INPUT);
    states[i] = LOW;
  }
}

void loop() {
  for(int i=0; i<4; i++){
    int now = digitalRead(intputs[i]); //讀取按鈕輸入狀況
    if ( now != states[i] ) { //當按鈕情況有改變的話,因為是定時讀取訊號,為了防止重複無意義的壓按鍵或放按鍵的動作所以加入這個判斷式。
        if (now == HIGH){ //當按鈕按下去的時候
            Keyboard.press(keys[i]); //按下對應的鍵盤按鍵
        }  else {
            Keyboard.release(keys[i]);  //放開對應的鍵盤按鍵,這裡不用releaseAll(),因為會干擾到其他按鍵,未設這行,對應的按鍵會持續壓下去不會放掉。
        }
    }
    states[i] = now; //更新按鈕狀況
}
如果你的按鈕未壓下去時是HIGH的話,除了多放一個反閘(7404IC或加用電晶體做...)以外,程式setup函數記得先將intputs的pin全部設為HIGH,避免Arduino在未接任何東西的時候出現按鈕狂按的狀況,而後面判斷按鈕壓下去的時候就變成了now == LOW。

這樣一來其他音G的控也可以用這方式來編寫,線路圖就懶得畫了先略,現在有模組線路都很好接了,不像之前還要買散裝零件照線路圖慢慢來。

至於上次提到16個按鍵擴充IO的部分會試著用MCP230XX系列的IC來製作。
最後紅外線避障模組感應範圍最好不要太大,否則會互相干擾,進而影響到分數和遊玩品質。
PART 4 待續

引用網址:http://www.jamesdambrosio.com/TrackBack.php?sn=3880268
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 1 篇留言


十分期待part4,支持!

10-14 00:55

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★eric600369 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[妄想]自製家用中二機計... 後一篇:[捏他]The fore...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情? 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】