土製大型電玩搖桿轉電腦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!!
請問這樣是否就可以用現成的街機搖桿將絕招組合鍵設進來?
回覆刪除HI J先生, 理論上可以用這個架構做到,只是硬體上可能還需要額額外的按鍵用來觸發已經組合好的招式(或是犧牲本來的其中幾個按鈕)
刪除