Bonjour,
c'est une situation un peu bizarre, mais mon code marche sans que je ne comprenne pourquoi .
Le but de mon code est d'allumer certaines LEDs en fonction du caractère entré ( formant un caractère selon le code Braille avec la disposition des LEDs ), et tant que l'on a pas entré un nouveau caractère, les LEDs restent allumées.
En effet, je ne m'attendais pas à ce qu'il fonctionne tel que je le voulais et pourtant (j'avais changé certaines valeurs sans trop y croire ) si ! Je crois que c'est à cause des valeurs renvoyées par la librairie Sérial mais je ne comprends absolument pas pourquoi.
La valeur que j'ai changé et qui a rendu mon code fonctionnel est dans la fonction loop ( à la ligne "if(Serial.available()>1)" ).
Si vous pouviez m'éclairer, ce serait vraiment très sympa Voici le code :
Variables globales :
int ledHG=12; // led en haut à gauche
int ledHD=11; // led en haut à droite
int ledMG=10; // led au milieu à gauche
int ledMD=9; // led au milieu à droite
int ledBG=8; // led en bas à gauche
int ledBD=7; // led en bas à droite
int boutonGauche=5; // bouton à gauche
int boutonDroit=4; // bouton à droite
boolean etat= true ;
Fonction pour éteindre les Leds :
void eteindreLed(){
digitalWrite(ledHG,LOW); // éteindre les LEDs
digitalWrite(ledHD,LOW); // éteindre les LEDs
digitalWrite(ledMG,LOW); // éteindre les LEDs
digitalWrite(ledMD,LOW); // éteindre les LEDs
digitalWrite(ledBG,LOW); // éteindre les LEDs
digitalWrite(ledBD,LOW); // éteindre les LEDs
}
Fonction pour allumer la LED en fonction du caractère entré :
void allumerLed(char lettre) {
if (lettre>=97 && lettre<=122) // upToLowerCase
lettre=lettre-32;
switch (lettre){ // Allumer les LEDs
case 65: // A
digitalWrite(ledHG,HIGH);
break;
case 66: // B
digitalWrite(ledHG,HIGH);
digitalWrite(ledMG,HIGH);
break;
case 67: // C
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
break;
case 68: // D
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledMD,HIGH);
break;
case 69: // E
digitalWrite(ledHG,HIGH);
digitalWrite(ledMD,HIGH);
break;
case 70: // F
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
break;
case 71: // G
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledMD,HIGH);
break;
case 72: // H
digitalWrite(ledHG,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledMD,HIGH);
break;
case 73: // I
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
break;
case 74: // J
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledMD,HIGH);
break;
case 75: // K
digitalWrite(ledHG,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 76: // L
digitalWrite(ledHG,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 77: // M
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 78: // N
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 79: // O
digitalWrite(ledHG,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 80: // P
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 81: // Q
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 82: // R
digitalWrite(ledHG,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 83: // S
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 84: // T
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBG,HIGH);
break;
case 85: // U
digitalWrite(ledHG,HIGH);
digitalWrite(ledBG,HIGH);
digitalWrite(ledBD,HIGH);
break;
case 86: // V
digitalWrite(ledHG,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledBG,HIGH);
digitalWrite(ledBD,HIGH);
break;
case 87: // W
digitalWrite(ledHD,HIGH);
digitalWrite(ledMG,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBD,HIGH);
break;
case 88: // X
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledBG,HIGH);
digitalWrite(ledBD,HIGH);
break;
case 89: // Y
digitalWrite(ledHG,HIGH);
digitalWrite(ledHD,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBG,HIGH);
digitalWrite(ledBD,HIGH);
break;
case 90: // Z
digitalWrite(ledHG,HIGH);
digitalWrite(ledMD,HIGH);
digitalWrite(ledBG,HIGH);
digitalWrite(ledBD,HIGH);
break;
}
}
Fonction setup :
void setup(){
Serial.begin(9600);
pinMode (ledHG,OUTPUT);
pinMode (ledHD,OUTPUT);
pinMode (ledMG,OUTPUT);
pinMode (ledMD,OUTPUT);
pinMode (ledBG,OUTPUT);
pinMode (ledBD,OUTPUT);
pinMode (boutonGauche,INPUT);
pinMode (boutonDroit,INPUT);
digitalWrite(boutonGauche,HIGH);
digitalWrite(boutonDroit,HIGH);
}
Fonction loop :
void loop (){
char lettre = Serial.read();
do {
allumerLed(lettre);
if(Serial.available()>1){
eteindreLed();
etat=false;
}
} while ( etat==true);
etat=true;
}