Salve a tutti,
sto facendo comunicare matlab con arduinoDue via seriale. In particolare da matlab inserisco un numero da tastiera che su arduino uso per controllare un motore (MG995 della TowerPro).
La comunicazione va a buon fine se la cifra che digito è solo una scrivendo
int vall;
vall=Serial.read();
Ho provato a leggere più cifre dalla seriale(in particoalre me ne servono 3) con questo codice
int vet[2];
int val;
for (int i=0;i<3;i++){
vall=Serial.read();
vet[i]=vall;
}
val=vet[0]+(vet[1]*10)+(vet[2]*100);
Buona sera,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.
Guglielmo
P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda: - serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - pinout delle varie schede by xxxPighi: Pinout - link generali utili: Link Utili
... guarda che comunque, con la read(), sempre UN byte alla volta leggi, quindi, se spedisci TRE caratteri, devi continuare a girare in un ciclo fino a quando ci sono caratteri availables. E fai anche attenzione a COME li ricevi ... probabilmente come caratteri ASCII ... :
Perché non dedichi un po' di tempo a studiare meglio i metodi della classe Serial? ... perché è evidente con NON gli hai dedicato il tempo necessario.
Guglielmo
P.S.: E perché NON fai debug? Esempio inserendo una Serial.print() dopo la Serial.read() così vedi esattamente cosa stai ricevendo ...
eh okay ci siamo arrivati, ma il ciclo for ad esempio non funziona… comunque l’essenziale l’abbiamo studiato e molte cose scritte su internet non funzionano. Non è che potresti scriverci un codice per aiutarci?
Non posso fare il debug con la seriale di arduino perchè è occupata dal matlab.
Jhonny1064:
... Non è che potresti scriverci un codice per aiutarci?
Purtroppo qui non funziona così ... prova a rileggere con attenzione il punto 16.1 del REGOLAMENTO(... che avevo chiesto di leggere con MOLTA attenzione) ... :
Il "for", come lo avevi fatto prima, certo che NON andava ... non controllavi se c'erano caratteri da leggere ... unendo le varie tecniche si arriva alla lettura.
Poi ... ci sono i metodi per gli "svogliati" che NON hanno voglia di studiare/imparare ... basta guardare parseInt(), parseFloat(), readString(), ecc. ecc. e si ha la "pappa fatta" ...
Comunque, se ti sforzi e fai una ricerca su Google per "Arduino leggere seriale" ... escono appena 64'000 e passa risultati ... hai voglia ad esempi ...