Bonjour à tous,
Avant tout je précise que mon projet se développe avec un arduino pro micro.
Je me dirige vers vous car je n'ai, malgré mes recherches, pas réussi à faire ce que je voulais.
Mon idée est de pouvoir envoyer un numéro série correspondant à l'une des touches d'un clavier traditionnel.
Récupérer cette valeur puis l'associer avec un de mes boutons du clavier que j'ai monté.
Exemple : Bouton : k2 = Touche clavier 'z'
Je souhaite faire ca pour communiquer avec une application qui permettra de choisir les touches qu'on veut associer.
J'ai réfléchi et tenté plusieurs idées sans résultat satisfaisant (enfin, j'y arrive mais c'est trop limité. un seul bouton - pour 9 ou 10 touches configurable et j'ai au moins 9 boutons à devoir configurer).
J'ai essayer plusieurs serial en parallèle (Serial.begin, Serial1.begin...)(dans ce cas la nous sommes limités à 4 Serial max)
J'ai tenté de combiner les numéro : if(etat == '1' && '2' && ...)(dans ce cas l'execution se fait individuellement puis en groupe)
J'ai tenté de convertir en string : if(etat == "toto")(cela n'a pas fonctionné)
Voila, donc pour résumer :
Je souhaite pouvoir associer chacun de mes boutons à n'importe quelle touche de mon clavier.
par la suite l'idée est de pouvoir stocker "la config" à chaque arrêt du arduino(mais ce n'est pas ma priorité:).
Bref j'ai essayé tout ce qui me venait par la tête mais j'en vient à la conclusion que cette fois-ci j'ai besoin de votre aide.
Si vous résolvez mon problème je vous en serez reconnaissant mais si quelqu'un peut m'expliquer où ma logique est rentrée en contradiction avec la logique "Arduino" cela serait vraiment apprécié.
Je précise que je ne m'y connais que depuis un peut plus d'une semaine mais je buche beaucoup sur Arduino.
Quoi que vous fassiez, je vous remercie d'avoir pris le temps de lire mon post!
Voici mon code de test :
#include <Keyboard.h> //Importation de la bibliothèque "Keyboard"
const char axex = A1; //Déclaration des broches
const char axey = A0;
const char sw = 6;
const char k4 = 5;
const char k3 = 4;
const char k2 = 3;
const char k1 = 2;
int sprint = KEY_LEFT_SHIFT; //Touche spéciale
unsigned int axeX; //Variables des axes de joystick
unsigned int axeY;
char touche[26];
int boutonK4;
int boutonK3;
int boutonK2;
int boutonK1;
int etat;
void setup() {
pinMode(k1, INPUT_PULLUP); //Assignation des broches
pinMode(k2, INPUT_PULLUP);
pinMode(k3, INPUT_PULLUP);
pinMode(k4, INPUT_PULLUP);
pinMode(sw, INPUT_PULLUP);
pinMode(axex, INPUT);
pinMode(axey, INPUT);
digitalWrite(k1, HIGH);
digitalWrite(k2, HIGH);
digitalWrite(k3, HIGH);
digitalWrite(k4, HIGH);
digitalWrite(sw, HIGH);
Serial.begin(9600); //Connexion série
Keyboard.begin(); //Ouverture du "système Keyboard"
touche[0]='a'; //Valeur du TABLLEAU touche
touche[1]='b';
touche[2]='c';
touche[3]='d';
touche[4]='e';
touche[5]='f';
touche[6]='g';
touche[7]='h';
touche[8]='i';
touche[9]='j';
touche[10]='k';
touche[11]='l';
touche[12]='m';
touche[13]='n';
touche[14]='o';
touche[15]='p';
touche[16]='q';
touche[17]='r';
touche[18]='s';
touche[19]='t';
touche[20]='u';
touche[21]='v';
touche[22]='w';
touche[23]='x';
touche[24]='y';
touche[25]='z';
}
void loop() {
axeX = analogRead(axex); //Correspondance des variables des axes du joystick
axeY = analogRead(axey);
//---------------------------------------------------CONFIG-------------------------------------------------------------//
if(Serial.available() > 0) {
etat = Serial.read();
Serial.println(etat);
if(etat =="toto"){ boutonK4 = 0; Serial.print("Bouton K 4 : touche A "); Serial.println(boutonK4);}
if(etat =='1' && '1' && '1' && '1' && '2'){boutonK4 = 25; Serial.print("Bouton K 4 : touche Z "); Serial.println(boutonK4);}
if(etat =='1' && '1' && '1' && '1' && '2'){boutonK4 = 18; Serial.print("Bouton K 4 : touche S "); Serial.println(boutonK4);}
if(etat =='1' && '1' && '1' && '1' && '3'){boutonK4 = 3; Serial.print("Bouton K 4 : touche D "); Serial.println(boutonK4);}
if(etat =='1' && '1' && '1' && '1' && '4'){boutonK4 = 16; Serial.print("Bouton K 4 : touche Q "); Serial.println(boutonK4);}
if(etat =='2' && '1' && '1' && '1' && '1'){boutonK3 = 25; Serial.print("Bouton K 4 : touche Z "); Serial.println(boutonK4);}
if(etat =='2' && '1' && '1' && '1' && '2'){boutonK3 = 18; Serial.print("Bouton K 4 : touche S "); Serial.println(boutonK4);}
if(etat =='2' && '1' && '1' && '1' && '3'){boutonK3 = 3; Serial.print("Bouton K 4 : touche D "); Serial.println(boutonK4);}
if(etat =='2' && '1' && '1' && '1' && '4'){boutonK3 = 16; Serial.print("Bouton K 4 : touche Q "); Serial.println(boutonK4);}
}
//----------------------------------------------------------------------------------------------------------------//
if(digitalRead(k4) == LOW){
if(boutonK4 == 25){Keyboard.press(touche[26]);}
if(boutonK4 == 18){Keyboard.press(touche[19]);}
if(boutonK4 == 3){Keyboard.press(touche[4]);}
if(boutonK4 == 16){Keyboard.press(touche[17]);}
}
if(digitalRead(k3) == LOW){
if(boutonK3 == 25){Keyboard.press(touche[26]);}
if(boutonK3 == 18){Keyboard.press(touche[19]);}
if(boutonK3 == 3){Keyboard.press(touche[4]);}
if(boutonK3 == 16){Keyboard.press(touche[17]);}
}
else{Keyboard.releaseAll();}
}