土製大型電玩搖桿轉電腦USB[part 2]-使用Arduino轉板

自從上次上次用了50元有找(一對99)的USB手把拆來當轉板失敗後,這次嘗試B計畫!! 使用Aruino來當USB介面!! 我的想法是找一個可以的Arduino的USB搖桿範例,然後將雷神的按鍵接到Arduino的GPIO!! 理論上這樣就可以把雷神當成電腦用的USB大搖桿了!!




很幸運的在網路上找到Arduino USB搖桿的範例 leoJoy
這組範例的功能是將Arduino列舉成搖桿,並會每100ms亂數送一個搖桿的按鍵到PC


主要進行的修改
1.範例原先為亂數輸入按鍵及方向改成從GPIO觸發
2.移除不需要的按鍵,我目前只需要上下左右+ABCD 8個按鍵
3.原先主程式中的delay(100)要拿掉會調快,不然格鬥遊戲的必殺技會變得超難按的

其他注意事項:
#原先在Arduino 1.5.7無法編譯,會出現什麼"ring_buffer"錯誤...@@,需用這個連結的版本 https://drive.google.com/file/d/0B1OHs6cMiH5FVjluSjhZcnItaWs/view?usp=sharing
#Arduino要用Leonardo (或是其他使用ATmega32U4的,因為這棵AVR有內建USB引擎)

需要自己做的電路不複雜,只是要把雷神的輸出接到Arduino上



做好的轉板


JoyState_t joySt;
const int Upbutton = 2;
const int Downbutton = 3;
const int Leftbutton = 4;
const int Rightbutton = 5;
const int button1 = 6;
const int button2 = 7;
const int button3 = 8;
const int button4 = 9;

void setup()
{
pinMode(13, OUTPUT);


joySt.xAxis = 127;
joySt.yAxis = 127;
joySt.zAxis = 127;
joySt.xRotAxis = 255;
joySt.yRotAxis = 255;
joySt.zRotAxis = 255;
joySt.throttle = 0;
joySt.rudder = 127;  //127 is the nature for Up/Down dirction in the menu of MAME
joySt.hatSw1 = 0;
joySt.hatSw2 = 0;
joySt.buttons = 0;

        pinMode(Upbutton, INPUT);
        pinMode(Downbutton, INPUT);
        pinMode(Leftbutton, INPUT);
        pinMode(Rightbutton, INPUT);
        pinMode(button1, INPUT);
        pinMode(button2, INPUT);
        pinMode(button3, INPUT);
        pinMode(button4, INPUT);

}


void loop()
{



        joySt.buttons=0;
        
        joySt.buttons=joySt.buttons+((!digitalRead(Upbutton))<<0);
        joySt.buttons=joySt.buttons+((!digitalRead(Downbutton))<<1);
        joySt.buttons=joySt.buttons+((!digitalRead(Leftbutton))<<2);
        joySt.buttons=joySt.buttons+((!digitalRead(Rightbutton))<<3);
        joySt.buttons=joySt.buttons+((!digitalRead(button1))<<4);
        joySt.buttons=joySt.buttons+((!digitalRead(button2))<<5);
        joySt.buttons=joySt.buttons+((!digitalRead(button3))<<6);
        joySt.buttons=joySt.buttons+((!digitalRead(button4))<<7);        

// delay(100);


// Call Joystick.move
Joystick.setState(&joySt);

}
 因為只是借雷神的按鍵當開關,所以電不用開,接上電腦玩MAME!!











留言

  1. 請問這樣是否就可以用現成的街機搖桿將絕招組合鍵設進來?

    回覆刪除
    回覆
    1. HI J先生, 理論上可以用這個架構做到,只是硬體上可能還需要額額外的按鍵用來觸發已經組合好的招式(或是犧牲本來的其中幾個按鈕)

      刪除

張貼留言

這個網誌中的熱門文章

Arduino ANN溫度控制實驗計畫

[馬尼拉]菲律賓職籃PBA!!

Arduino使用EEPROM練習(1)