Stick Arcade Arduino

Bonjour
je vous présente mon tout premier projet arduino ainsi que mon premier programme réalisé grasse  aux leçons du cite du zéro.

Il s’agit donc d’un pad arcade pour les émulateurs en tout genre.

j’ai recup la boite d’un xbox HS (vu ça sur un autre tuto de fabrication de pad)
 

installer les bouton avec une planche en bois pour rigidifier le tout.
 


 
cablé le tout en suivant des exemple donner pour les switchs sur le cite arduino
 
http://arduino.cc/en/Tutorial/KeyboardMessage?from=Tutorial.KeyboardButton
 

 
 
et enfin écrit le programme, précision importante il s’agit d’un arduino LEONARDO
 
 
//réalisé par POGOTIK le 23/08/2013

const char buttonStart = 1;
const char buttonHaut = 13;                    //  broche d’entrée de bouton-poussoir
const char buttonBas = 3;
const char buttonGauch = 4;
const char buttonDroit = 2;
const char buttonCroix = 5;
const char buttonCarret = 6;
const char buttonTriangle = 7;
const char buttonRond = 8;
const char buttonL1 = 9;
const char buttonR1 = 11;
const char buttonL2 = 10;
const char buttonR2 = 12;
const unsigned char buttonSelect = 14;
int valeurSelect = 0;
const unsigned char buttonSwitch = 15;
int valeurSwitch = 0;

void setup() {                               // difinir pin entrée ou sortie:
  pinMode(buttonStart, INPUT);               // initialiser le contrôle sur le clavier:
  pinMode(buttonHaut, INPUT);             
  pinMode(buttonBas, INPUT);
  pinMode(buttonGauch, INPUT);
  pinMode(buttonDroit, INPUT);
  pinMode(buttonCroix, INPUT);
  pinMode(buttonCarret, INPUT);
  pinMode(buttonTriangle, INPUT);
  pinMode(buttonRond, INPUT);
  pinMode(buttonL1, INPUT);
  pinMode(buttonR1, INPUT);
  pinMode(buttonL2, INPUT);
  pinMode(buttonR2, INPUT);
 // pinMode(buttonSelect, INPUT);
  //pinMode(buttonSwitch, INPUT);

  Keyboard.begin();
  Serial.begin(9600);
}

void loop() {                              //  lire le bouton-poussoir:


{ char buttonup = digitalRead(buttonHaut);  //haut
  char buttondown = digitalRead(buttonBas);  //bas
  char buttonleft = digitalRead(buttonGauch);  //gauche
  char buttonrigt = digitalRead(buttonDroit);   //droit
 if ((buttonup == HIGH)
  &&(buttonrigt == HIGH))
  {  (Keyboard.press(‘z’))&&(Keyboard.press(‘d’)); }                                            //haut droit
 else if ((buttonup == HIGH) &&(buttonleft == HIGH))
  {  (Keyboard.press(‘z’))&&(Keyboard.press(‘q’)); }                                            //haut gauche
 else if ((buttondown == HIGH)&&(buttonrigt == HIGH))
  {  (Keyboard.press(‘s’))&&(Keyboard.press(‘d’)); }                                            //bas droit
 else if  (buttondown == HIGH && buttonleft == HIGH)
  {  (Keyboard.press(‘s’))&&(Keyboard.press(‘q’)); }                                            //bas gauche
 else if  (buttondown == HIGH && buttonleft == HIGH)
  {  (Keyboard.press(‘s’))&&(Keyboard.press(‘q’)); }
 else if (buttonup == HIGH)
  {  (Keyboard.press(‘z’))&&(Keyboard.release(‘q’))&&(Keyboard.release(‘d’));  }                //haut seul
 else if (buttondown == HIGH)
  {  (Keyboard.press(‘s’))&&(Keyboard.release(‘q’))&&(Keyboard.release(‘d’));  }                //bas seul
 else if (buttonleft == HIGH) 
  {  (Keyboard.press(‘q’))&&(Keyboard.release(‘z’))&&(Keyboard.release(‘s’));  }                //gauche seul
 else if (buttonrigt == HIGH) 
 {  (Keyboard.press(‘d’))&&(Keyboard.release(‘z’))&&(Keyboard.release(‘s’));  }                  //droite seul
                                            //bas gauche
  else ((Keyboard.release(‘z’))&&(Keyboard.release(‘s’))                                        //relache toute les directions
       &&(Keyboard.release(‘q’))&&(Keyboard.release(‘d’)));
   }

  char buttoncroix = digitalRead(buttonCroix);  //croix
  if   (buttoncroix == HIGH) {
    Keyboard.press(‘n’);
  }
  else (Keyboard.release(‘n’));
  

  char buttoncarret = digitalRead(buttonCarret);  //carret
  if   (buttoncarret == HIGH) {
    Keyboard.press(‘b’);
  }
  else (Keyboard.release(‘b’));
  
 
  char buttontriangle = digitalRead(buttonTriangle);  //triangle
  if (buttontriangle == HIGH) {
    Keyboard.press(‘v’);
  }
  else (Keyboard.release(‘v’));
  
 
  char buttonrond = digitalRead(buttonRond);  //rond
  if (buttonrond == HIGH) {
    Keyboard.press(‘c’);
  }
  else (Keyboard.release(‘c’));
 
    char buttonl1 = digitalRead(buttonL1);  //L1
  if   (buttonl1 == HIGH) {
    Keyboard.press(‘g’);
  }
  else (Keyboard.release(‘g’));
 
    char buttonl2 = digitalRead(buttonL2);  //L2
  if   (buttonl2 == HIGH) {
    Keyboard.press(‘t’);
  }
  else (Keyboard.release(‘t’));
 
      char buttonr1 = digitalRead(buttonR1);  //R1
  if   (buttonr1 == HIGH) {
    Keyboard.press(‘h’);
  }
  else (Keyboard.release(‘h’));
 
      char buttonr2 = digitalRead(buttonR2);  //R2
  if   (buttonr2 == HIGH) {
    Keyboard.press(‘y’);
  }
  else (Keyboard.release(‘y’));
 
        char buttonstart = digitalRead(buttonStart);  //start
  if   (buttonstart == HIGH) {
    Keyboard.press(‘m’);
  }
  else (Keyboard.release(‘m’));
 
      valeurSelect = analogRead(0);  //select
  if   (valeurSelect > 850)
  {
    Keyboard.press(‘l’);
  }
  else (Keyboard.release(‘l’));
 
 
       valeurSwitch = analogRead(1);  //switch
  if   (valeurSwitch > 850) {
    Keyboard.press(‘p’);
  }
  else (Keyboard.release(‘p’));
  
   
}
 
 
en espérant que cela serve à quelqu’un.

Salut ! 
Merci pour ton poste, je suis justement en train de développer exactement ce type de projet, pour le moment, j’aimerai simplement savoir où tu t’es procuré le Joysticks (ainsi que les boutons mais c’est plus facile à trouver).
Cordialement
Merubyx

http://www.arcadeworlduk.com/

Ce 1st post mérite le titre de « best 1st post ever » non ? ;)  En tout cas super mod. :smiley:

Pour le matos :

http://www.starcab.net/

:clap: :clap:

[quote=« Caféine, post:4, topic: 55227 »][/quote]

Surtout qu’il date de 2013, et ne remonte que maintenant :slight_smile:

Grave, « Best first post ever » que personne n’a vu :innocent:
Uhuh.

Oh punaise! :shame: :blush:

Remonté par un mec 1 post aussi d’ailleurs. Bravo les gars :stuck_out_tongue:

[quote=“Arkeon, post:10, topic: 55227”][/quote]
Purée, GZ se fait infiltrer !!! Bientôt ils vont déposer une proposition de job :tongue2:

Yop, je vous présente mon stick arcade réalisé avec :
-un boitier plastique à 7 euros
-carte arduino leonardo + kit sanwa +cable + cosses : 80 euros

Compatible PC et ps3 grace à Leojoy et on peut même programmer des combos sur certains boutons :wink: Pour test bien sur, surtout qu’en ligne, il est difficile de synchro les touches de combos avec le framerate.
Ca marche nickel et d’après un pote qui fait du street depuis longtemps, il est étonné par l’input lag digne d’un vrai stick