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.








Pour test bien sur, surtout qu’en ligne, il est difficile de synchro les touches de combos avec le framerate.