Question sur la table ASCII et/ou la communication série

Bonjour à tous,
Je cherche à convertir une lettre entrée dans la fenêtre série par l'utilisateur en un chiffre, grâce à la table de conversion ASCII. Rien de bien compliqué, mais... le résultat renvoyé est étrange. Cela me renvoie d'abord le bon résultat, puis un autre, erroné, sans que je le demande. Voici le bout de code en question:

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    // variable contenant le caractère à lire
    char carlu = 0;
    // variable contenant le nombre de caractère disponibles dans le buffer
    int cardispo = 0;

    cardispo = Serial.available();

    while(cardispo > 0) // tant qu'il y a des caractères à lire
    {
        carlu = Serial.read(); // on lit le caractère
        Serial.println(carlu-'a'); // puis on le convertit en chiffre
        cardispo = Serial.available(); // on relit le nombre de caractères dispo
    }
    // fin du programme
}

Le résultat si je rentre par exemple la lettre a : 0-87.
D'où sort ce -87?
J'ai la pénible intuition que la réponse est très simple, mais je ne l'ai pas....
Merci pour votre aide.

'a' = 97
87 = 97 - 10
Le caractère 10 est NL (Newline).
Il suffit de ne pas en tenir compte, on peut également ignorer CR (CarriageReturn).

  if (carlu != '\n' && carlu != '\r') {     // NL ou CR
        Serial.println(carlu-'a'); // puis on le convertit en chiffre
  }

Merci pour cette réponse efficace et rapide!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.