Ciao, penso di avere un problema con la comunicazione seriale di arduino, vi posto il semplice sketch che ho fatto:
Molto semplicemente vado a leggere dalla porta seriale un valore immesso e lo riscrivo per controllare il corretto funzionamento, ma il valore che immetto non è quello restituito, come se venisse visto con un altra regola...vi trascrivo i valori:
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
10 58
void setup() {
Serial.begin(9600);
}
void loop() {
val=Serial.read();
delay(500);
Serial.println(val,DEC);
delay(2000);
}
[code]
Se invii un carattere attraverso il terminale di Arduino verrà(immagina un po') interpretato come carattere e non come numero.
lucamazzarol:
Ciao,
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
Come detto sopra, la comunicazione è a carattere, se spedisci il carattere '0' ottieni il valore decimale 48 che è il valore ascii del carattere '0'.
Per sapere se ci sono dati in coda, si usa Serial.available().
Nel seguente codice stampiamo il carattere ricevuto sia come carattere che come valore ascii:
void loop() {
if(Serial.available())
{ val=Serial.read();
Serial.print(val,DEC); // ascii code
Serial.print(" => ");
Serial.println((char)val);
}
}
Se vuoi ricevere una valore è utile la Serial.parseInt()
grazie mille, ho fatto la presentazione, letto il regolamento, ho corretto il primo post e adesso inizio a studiare...che è meglio!!