info seriale

Ciao, vorrei collegare due arduini tramite seriare ed inviare un numero composto da 9 cifre dal primo al secondo. vorrei che il secondo leggendo il nomero faccia una serie di cose ess:

123456789 743275986

il secondo deve leggere la cifra n 8 cioè 8 e faccia cio che chiedo oppure la cifra n 4 cioè 2 e faccia quello che chiedo. come posso ricevere un numero intero poi divderlo in singole cifre? spero di essere stato chiaro

Leggi come creare una stringa coi caratteri della seriale. Memorizzi tutto in un char che è un array di caratteri e da lì lo gestisci con l'indice (ricorda che parte a contare da 0)

Stabilisci il numero di caratteri che trasmetti ogni volta. Ti crei un array in ricezione e, siccome la seriale legge un carattere per volta, li leggi ad uno ad uno e li butti nell'array. Poi esamini l'array e in base al contenuto decidi le azioni da fare.

scusate ma non riesco a capire come leggere la cifra che mi interessa

tu riceverai e metterai in un vettore o array di char

char buf[20];

Dopo aver messo i dati ricevuti in questo buffer (buf=buffer), potrai leggere i singoli caratteri:

char c;
c=buf[3];   // leggo in c 4° elemento di buf (si parte da 0)

allora tu vai a leggere tutte le cifre grazie ad un ciclo.

la seriale del 328 funziona in questo modo: all'arrivo di un carattere sulla seriale questo viene memorizzato in un buffer, come un contenitore in cui vengono salvati tutti i byte in arrivo. per la seriale 1 byte è un carattere. con serial.read() tu vai a leggere il carattere più in fondo (insomma il primo arrivato) e lo allochi dove vuoi (in ram generalmente) in modo da poterlo utilizzare per i tuoi scopi. però un momento: ho detto che tu leggi byte per byte ma se volessi leggere una serie di caratteri? beh una serie di caratteri in gergo si chiama stringa ed è quello che devi fare tu.

ciò che fai è creare un ciclo di for che vada da 0 a 8 e vai a memorizzare in un array tutti i byte in arrivo. una variabile inizializzata come array devi pensarla come un contenitore con tanti piccoli scompartimenti che vanno da 0 ad n (n lo decidi tu).

nel tuo caso dovrai inizializzare una cosa del tipo

byte stringa[9];

poi andrai ad allocare in ogni scompartimento il valore che arriva da Serial.read() non ti do il codice fatto o sarebbe troppo semplice e non impareresti :P comunque ricorda che tu per "selezionare" uno scompartimento ed assegnargli un valore dici stringa[n] = valore; dove n è (nel tuo caso) un numero che va da 0 ad 8. l'obiezione che fai è "ma sopra mi hai fatto scrivere stringa[9] ed ora mi dici massimo 8? hai bevuto?". no non ho bevuto semplicemente quando inizializzi la variabile devi dirgli quanti elementi (scompartimenti) deve tenere e tu iniziando da 0 ed arrivando a 8 hai esattamente 9 elementi. XD

Ok credo di aver capito ora provo un po? Grazie