Arcade ==== L'objectif est de réaliser une borne d'arcade complète (joystick/boutons + interface pc + système de jeu). Pour plus d'informations sur ce projet, contacter ''louis''. ## Matos J'ai déjà — en mon nom (''louis'') propre — acheté des composants (arduino + joysticks + arduino). J'ai « volé » des fils en cave ainsi que du sapin. ## Avancement La planche avec les boutons (dont joysticks) sont montés. === Code PC pour lancer des event X11 === ``` include include include include include include include include include include Display *dpy; const int nb_convert = 20 ; const int convert[20][2] = { // R stick {11,XK_Up} , {7,XK_Down} , {8,XK_Right} , {12,XK_Left} , //button R {4,XK_z} , {6,XK_x} , {3,XK_c} , {2,XK_Control_L} , {1,XK_Shift_L} , {5,XK_Return} , // L stick {11,XK_w} , {7,XK_s} , {8,XK_d} , {12,XK_a} , //button L {17,XK_i} , {18,XK_o} , {13,XK_p} , {16,XK_j} , {14,XK_k} , {15,XK_l} }; int main(int argc, char **argv) { Window agresseur, victime; XKeyEvent esend; if (! (dpy = XOpenDisplay(":0.0"))) { fprintf(stderr, "s\n", argv[0], XDisplayName(NULL)); return -1; } freopen("/dev/ttyUSB0","r",stdin); char last[100]; char in[100] ; int decal = 0 ; while(1) { if(scanf("%s",in+decal)) { decal = strlen(in); if(in[decal-1] == '>') { if(strcmp(in,last)) { printf("%s\n",in); for(unsigned int a = 0 ; a < strlen(in) ; a++ ) if( in[a] != last[a] && (in[a] == 'H' || in[a] == 'L') ) { XTestFakeKeyEvent(dpy, XKeysymToKeycode( dpy , a>=26?XK_a+a-26:XK_A+a),in[a]=='H' , 0); /* for( int i = 0 ; i < nb_convert ; i++ ) if( a == convert[i][0] ) XTestFakeKeyEvent(dpy, XKeysymToKeycode( dpy , convert[i][1]),in[a]=='H' , 0); */ } XFlush(dpy); strcpy(last,in) ; } decal = 0 ; in[0] = '\0' ; } } } } ``` === Code arduino correspondant === ``` const int nb_power = 4 ; const int nb_read = 6 ; const int pin_power[nb_power] = {9,10,11,12}; const int pin_read[nb_read] = {2,3,4,5,6,7} ; const int aff = 13 ; int cur = 2 ; void setup() { //set every free to follow for( int x = 0 ; x < nb_power ; x++ ) pinMode(pin_power[x], INPUT); for( int y = 0 ; y < nb_read ; y++ ) pinMode(pin_read[y], INPUT); Serial.begin(9600); } void loop() { Serial.print("<"); digitalWrite(aff,LOW); for( int x = 0 ; x < nb_power ; x++ ) { pinMode(pin_power[x], OUTPUT); digitalWrite(pin_power[x], HIGH); cur = (cur+1)%(nb_read); for( int y = 0 ; y < nb_read ; y++ ) { // Serial.print(" "); switch(digitalRead(pin_read[y])) { case HIGH: digitalWrite(aff,HIGH); Serial.print("H"); break; case LOW: Serial.print("L"); break; default: Serial.print("d"); break; } } pinMode(pin_power[x], INPUT); } Serial.println(">"); } ```