[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