ciao a tutti sto facendo un robot e ora vorrei fargli eseguire n comandi inseriti da computer.
con python ho creato il programma per inviare comandi in arduino, solo che non riesco a far leggere un array ad arduino, mi prende solo il comando contenuto nel primo indice del vettore.
come si fa a prendere un array intero passato dalla porta seriale??
Per prima cosa bisogna documentarsi su come funziona la seriale su Arduino:
La seriale restituisce 1 byte alla volta per cui se spedisci una stringa lato Arduino ricevi una sequenza di byte per cui devi costruire il codice per leggere tutta la sequenza. In alternativa, sull'ultima versione dell'IDE, hai un paio di comandi aggiuntivi che leggono una sequenza di n byte oppure fino alla ricezione di un particolare carattere. Studia i metodi
readBytes()
readBytesUntil()
Se quella che vuoi passare all'arduino è una stringa devi appunto creare un array di char dove vai a memorizzare un carattere per cella per poi unire il tutto, io avevo fatto una cosa così:
char carattere;
char stringa[];
for(int i=0;i<lunghezza;i++){
carattere=Serial.read();
stringa[i ]=carattere;
}
Questo se conosci la lunghezza della stringa, altrimenti ad ogni stringa associ un ";" per far capire che è finita, quindi fai una lettura come quella sopra ma al posto del for() ci metti un while(carattere!=';')
leo72:
Porco cane, a saperlo prima del readBytesUntil()
Solo che non voglio passare alla nuova versione, ho visto che ci sono dei problemi con le librerie..
Piccolo OT, posso ricevere le stringhe con arduino e "formattarle" a mio piacere ? Ad esempio eliminando certi spazi, sostituendo " , " con " ; " ?
ciao
una volta che hai ricevuto la stringa puoi usare i metodi di String: