[Linux-Biella] arduino..
Jumping Jack
jumpingjack a mclink.it
Mar 26 Giu 2012 14:45:53 CEST
On 26/06/2012 14:33, Leonardo Buffa wrote:
> On 26/06/2012 13:15, Jumping Jack wrote:
>
>> Inoltre Serial.read() restituisce un int. Quindi penso sia per questo
>> che ti trovi i tre byte spezzati.
>
> che altro posso usare per leggere da seriale?
> io devo leggere un valore tra 0 e 180 (che sara' poi inviato con un
> echo VALORE >> /dev/ttyUSB0
>
Va bene Serial.read() ma assegnalo ad una variabile int (leggerai
comunque un byte per volta). Non so se sia quello il problema, in teoria
no, ma la teoria con il compilatore di Arduino non sermpre vanno d'accordo.
Comunque vai in loop sul ciclo principale non mettere un loop nel ciclo
principale, tipo:
void loop(){
if (Serial.available>=3){
metti qui tutto il resto
}
}
Se poi i dati vengono inviati un blocco alla volta se controlli che i
dati siano effettivamente 3 e vuoti il buffer in caso contrario è anche
meglio.
Ricordati anche che il sincronismo di Arduino è sul suo clock per cui è
un divisore di 16.000.000, questo significa che il valore che metti in
Serial.begin() sarà approssimativo, quindi in caso di una sequenza lunga
potresti avere errori. Cosa che capita regolarmente a 57000, soprattutto
con il suo monitor che non si adatta.
JJ
Maggiori informazioni sulla lista
Linux