Контроллер 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го нет признаков жизни).
Значит можно точно сказать что в этой части кода ошибка, но в чем именно я не могу понять.
Заранее спасибо за помощь!
Никто не натолкнет на проблему?