Контроллер Sega
- Войдите на сайт для отправки комментариев
Чт, 03/09/2015 - 22:11
Делаю переходник для геимпадов от сеги к компу. Нашел данную библиотеку http://geektimes.ru/post/255008/
в которой подключается только 1 геймпад.
Своими силами загнал туда второй. Но сразу же проблема. С 1го геимпада идет какой то мусор, а со вторым все в порядке, все кнопки нормально работают. Помогите, сам не справлюсь)
#include <SMDjoystick.h>
SMDjoystick j(2,3,4,5,6,8,7);
SMDjoystick jq(A0,A1,A2,A3,A4,9,A5);
uint16_t data=0;
uint16_t dataq=0;
uint16_t lastdata;
uint16_t lastdataq;
void setup()
{
Keyboard.begin();
Serial.begin(9600);
}
char keys[]={
'q',
'w',
'e',
0,
'r',
't',
'a',
's',
0,
'd',
0,
0,
'f',
'z',
'x',
'c'
};
char keysq[]={
'y',
'u',
'i',
0,
'g',
'h',
'j',
'k',
0,
'l',
0,
0,
'v',
'b',
'n',
'm'
};
void loop()
{
data=j.read();
for(int i=0;i<SMD_MAX_KEYS;i++){
if(keys[i]==0) continue;
bool c=(data>>i)&1;
if(c!=((lastdata>>i)&1)){
if(c)Keyboard.press(keys[i]);
else Keyboard.release(keys[i]);
}
}
lastdata=data;
dataq=jq.read();
for(int i=0;i<SMD_MAX_KEYS;i++){
if(keysq[i]==0) continue;
bool b=(dataq>>i)&1;
if(b!=((lastdataq>>i)&1)){
if(b)Keyboard.press(keysq[i]);
else Keyboard.release(keysq[i]);
}
}
lastdataq=dataq;
delay(20);
}
Еще так же скажу, если закоментировать кусок кода:
data=j.read();
for(int i=0;i<SMD_MAX_KEYS;i++){
if(keys[i]==0) continue;
bool c=(data>>i)&1;
if(c!=((lastdata>>i)&1)){
if(c)Keyboard.press(keys[i]);
else Keyboard.release(keys[i]);
}
}
lastdata=data;
То геймпад 2 - нормально работает(естественно что со 1го нет признаков жизни).
Если же наоборот закоментить кусок кода:
dataq=jq.read();
for(int i=0;i<SMD_MAX_KEYS;i++){
if(keysq[i]==0) continue;
bool b=(dataq>>i)&1;
if(b!=((lastdataq>>i)&1)){
if(b)Keyboard.press(keysq[i]);
else Keyboard.release(keysq[i]);
}
}
lastdataq=dataq;
То геимпад 1 - нормально работает(естественно что со 2го нет признаков жизни).
Значит можно точно сказать что в этой части кода ошибка, но в чем именно я не могу понять.
Заранее спасибо за помощь!
Никто не натолкнет на проблему?