Problema con Serial.read

Ciao A tutti

mi sto cimentando in un intervallometro molto semplice per tentare di fare dei time lapse. Niente di nuovo , anzi ho visto che ci sono degli altri topic in merito, ma quello che cerco io è qualcosa alla mia portata. il mio intento è quello di automatizzare per gradi il tutto ( anche perchè di programmazione non sò molto , sono costretto a partire per gradi.

il problema che sto incontrando è questo. Vorrei far comparire una scritta che mi dice " inserisci un valore", glielo dò , e lui mi dice " hai inserito " il valore letto dal mio inserimento

ecco il codice :

void setup()
{
  Serial.begin (9600);  //inizia la seriale per comunicazioni
  Temposcatto = 0;  //setto la variabile a 0
  }
   
void loop()
{     
        if ( Serial.available() > 0)   {                               
     Serial.print( "inserisci durata Tempo Scatto");   
      Temposcatto = Serial.read();
      delay(100); }
      Serial.print("hai inserito un tempo di ");
      Serial.write( Temposcatto);
      Serial.println (" secondi");
      Serial.flush();
      delay(3000);

 
  }

edit by mod: per favore includi il codice usando gli appositi tag

il risultato è che ho un ciclo continuo e i valori inseriti tramite seriale non corrispondono.. se per esempio inserisco 20 , vorrei legere la scritta " hai inserito un tempo di 20 secondi".
in realtà leggo 2 stringhe : una con "hai inserito un tempo di 2 secondi" ed il ciclo successivo l'altra stringa "hai inserito un tempo di 0 secondi".
a parte che potrei aver sbagliato a posizionare il ciclo.. ma perchè non leggo 20 ? ma un altro numero? od il numero spezzettato?

grazie
max996duino

Devi crearti un ciclo perchè la seriale tramite Serial.read legge un solo carattere alla volta.
Quindi se gli trasmetti 20 lui legge il 2, poi devi dargli nuovamente il comando (in un ciclo) per leggere lo 0.
Se cerchi sul forum trovi miliardi di esempi. :grin:

questa era una cosa che non sapevo.Mi sto muovendo con delle guide che ho trovato su internet ma di questa particolarità non ne ho trovato traccia. Quindi se dovessi memorizzare dei valori è consigliabile lavorare con dei cicli. Supponiamo che debba leggere cifre a 2-3 valori decimali ( ossia , il 20 oppure 250 o 999 ) dovrò sicuramente ricorrere ad un ciclo di lettura fino a 3 caratteri e concaternarli per avere il valore da memorizzare dentro la variabile. sbaglio?

se dovessi fare una cosa del genere : T= 20 ( assegno a T il valore di 20 ) , dovrei far leggere al ciclo il 2 , poi lo 0 , ed il concatenamento? uso il comando STRTOK o come si chiama?

grazie
max996

Di solito si effettua il ciclo col while perchè non è noto a priori il numero dei caratteri in ricezione.
Comunque, se trasmetti numeri, puoi usare le funzioni della libreria serial di Arduino.
--> Serial.parseInt() - Arduino Reference
oppure
--> Serial.readBytesUntil() - Arduino Reference