Aiuto ricezione seriale

Ho un problema che mi affligge, e mentre in un PC avrei risolto in un minuto, su arduino (non essendo molto pratico...) non riesco a dare una soluzione.

Ricevo da seriale 2 caratteri, esempio 1a oppure 1b oppure 2a ecc ecc.

Come li ricevo e poi divido in due variabili considerando che Serial.read me ne prende uno alla volta ?

Ho bisogno d'avere i due dati separati.

Grazie.

Tanti modi. Ad esempio puoi contare quanti ne hai ricevuti, 0 è il primo e lo metti in una variabile, 1 è il secondo e lo metti in un'altra variabile (e quindi azzeri il contatore)

Un esempio ?

Grazie.

byte counter=0, primo=0, secondo=0;
void loop()
{ if(Serial.available())
  { int c=Serial.read();
    counter++;
    if(counter==1)  primo=c; 
    if(counter==2) 
    { secondo=c; 
      counter=0; 
      // qui ho primo e secondo caricati come char,  es 1b => 1='1'=49  b='b'=98   ascii table
      Serial.print(primo);
      Serial.print(",");
      Serial.println(secondo);
    }
  }
}

Non testato, non ho Arduino qui con me in ufficio

Quindi dentro a primo e secondo mi trovo rispettivamente 49 e 98 ?

Ora provo, grazie.

Funziona alla grande, grazie infinite !!!

Questo metodo funzionerà solo fino a che si mantiene il sincronismo.

Potrebbe accadere che (per un errore di comunicazione o altro) il secondo diventi il primo. E da li in poi saranno tutti regolarmente scambiati.

Per una comunicazione robusta si dovrebbero inviare alcuni caratteri di sincronismo iniziale e poi i caratteri di dati. E anche un CRC alla fine in modo da risincronizzarsi in caso di errori.

Naturalmente il tutto diventerebbe notevolmente più complesso e non è detto che in questo caso sia possibile e valga la pena di farlo.

Quindi lo scrivo solo per conoscenza, è bene sapere che il problema potrebbe saltar fuori e sapere cosa si dovrebbe fare in caso di necessità.