Serial.read() ne donne pas la bonne valeur

int a = 500;
void setup()
{
Serial.begin(9600);
delay(100);
Serial.println("donne un nombre");
Serial.println (a);
}
void loop()
{
if (Serial.available() > 0) // s'il y a un appui sur un bp alors
{
a = Serial.read(); // fonction permettant de déterminer le Bp appuyé en renvoyant une valeur de 1 à 5 (de S1 à S5)
Serial.println (a);
}

Bonjour,
Je dois utiliser la valeur récupérée par le moniteur. J'ai donc fais ce teste et m'aperçois que le Serial.print ne renvoie pas la valeur saisie et lue par le Serial.read.
J'aimerai connaitre la raison et donc l'erreur que je commets.
Merci

hbaquet:
int a = 500;
void setup()
{
Serial.begin(9600);
delay(100);
Serial.println("donne un nombre");
Serial.println (a);
}
void loop()
{
if (Serial.available() > 0) // s'il y a un appui sur un bp alors
{
a = Serial.read(); // fonction permettant de déterminer le Bp appuyé en renvoyant une valeur de 1 à 5 (de S1 à S5)
Serial.println (a);
}

hbaquet:
int a = 500;
void setup()
{
Serial.begin(9600);
delay(100);
Serial.println("donne un nombre");
Serial.println (a);
}
void loop()
{
if (Serial.available() > 0) // s'il y a un appui sur un bp alors
{
a = Serial.read(); // fonction permettant de déterminer le Bp appuyé en renvoyant une valeur de 1 à 5 (de S1 à S5)
Serial.println (a);
}

Serial.read() revoie le code ASCII d’un seul caractère.

Utilise parseInt() :

  a = Serial.parseInt();
  if (a != 0) {
     Serial.println (a);
  }

Merci beaucoup hbachetti

(c’est suprenant que hbachetti réponde à hbaquet :slight_smile: )

Je n'avais pas remarqué :slight_smile: