Контроллер Sega

timer_23
Offline
Зарегистрирован: 06.08.2014

Делаю переходник для геимпадов от сеги к компу. Нашел данную библиотеку 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го нет признаков жизни).

Значит можно точно сказать что в этой части кода ошибка, но в чем именно я не могу понять.

Заранее спасибо за помощь!

timer_23
Offline
Зарегистрирован: 06.08.2014

Никто не натолкнет на проблему?