Convertir Char en Variable

Bonjour,

Je suis en train d essayer de coder un jeux d échec avec un Arduino.
Je reçois du serial monitor une chaine de caractère correspondant au déplacement d une pièce
du style e2e4, pour déplacer le pion central.
je dois donc convertir les chiffres et les lettres de cette chaine de caractères en variable.
Le caractère '1' en variable de valeur 1 et le caractère 'a' en variable de valeur 1, ect....
J ai codé ca :

boolean onetime = true;
char text [] = {'e', '2', 'e', '4'};
byte value1 = 0;
byte value2 = 0;
byte value3 = 0;
byte value4 = 0;
byte temp = 0;

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

void loop() {
  if (onetime == true) {
    onetime = false;

    for (byte i = 0; i < 4; i++) {
      if (text[i] == '1') temp = 1;
      //...
      else if (text[i] == '8') temp = 8;
      else if (text[i] == 'a') temp = 1;
      //...
      else if (text[i] == 'h') temp = 8;

      if (i == 0) value1 = temp;
      else if (i == 1) value2 = temp;
      else if (i == 2) value3 = temp;
      else value4 = temp;
    }
  }
}

Ça marche, mais j ai le sentiment qu il y a moyen d être plus efficace.

Auriez vous une idée ?

Merci

Si vous voulez explorer comment écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez jeter un oeil à mon petit tuto sur le sujet

Bonjour,

Comme les valeurs ascii des chiffres ou des lettres se suivent il suffit de faire

  value1=text[0]-'a'+1;
  value2=text[1]-'0';
  value3=text[2]-'a'+1;
  value4=text[3]-'0';

Bien sur avant ça il faudrait s'assurer que le message est correctement formé.

AU TOP !

Merci pour vos réponses