Errore in lettura dati da tastiera

Ciao a tutti, avrei bisogno di acquisire dei dati da tastiera sui quali poi effettuare dei calcoli e ottenere a monitor i valori calcolati.

Per la parte riguardante la lettura dei dati da tastiera ho scritto il seguente codice:

float a;

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

void loop()
{
/* Acquiring a*/
  Serial.print("a: ");
  water = Serial.read();
  Serial.print(a); Serial.println(""); 

[...]

while(1);
}

Lanciando il monitor seriale mi aspetterei di vedere:

a:

con lo sketch in attesa dell'input e, una volta inserito il dato (es. 5) e premuto invio mi aspetterei di vedere sul monitor seriale

a: 5

invece se lancio lo sketch il programma non aspetta il mio input ma mi dà immediatamente il seguente output:

a:  -1.00

Perché??? ]:D ]:D ]:D Dov'è che sbaglio!?!?!

Grazie a tutti!

mario: Dov'è che sbaglio!?!?!

Sbagli perché NON STUDI i references e vuoi fare le cose senza sapere come funzionano quelle chiamate !!! ]:D

Serial.read() : Returns the first byte of incoming serial data available (or -1 if no data is available) - int

Devi verificare che ci siano dei caratteri da leggere con la Serial.available() ...

if (Serial.available() > 0) {
   ....
   ....
}

Guglielmo

@mario non sò cosa usi di solito per programmare, parrebbe tu abbia esperienza con linguaggi che girano su PC tipo Python che permettono con una print e una input di inserire dati da tastiera. Purtroppo su Arduino non funziona così. Potrebbe esserti utile la parseInt(): http://arduino.cc/en/Serial/ParseInt

Grazie.

Penso abbandonerò l'immissione da PC a favore di un tastierino numerico su arduino.