comunicazione seriale tra 2 arduini

salve

dovrei inviare un gruppo di valori di tipo float e interi da un arduino al altro via seriale al momento l'ho fatto utilizzando una stringa concatenata dei valori ma ho letto che non è la soluzione migliore perche occupa molte risorse

come potrei fare?

pensavo a una struttura ma non riesco a capire bene come fare

grazie

Puoi fare i seguenti passi:

  1. rendi i numeri da trasmettere del tipo più piccolo che permette di contenere il loro valore massimo (es. se un int non supererà mai 100 basta che sia di tipo byte)
  2. se usi float corti e a composizione fissa(3 cifre, 1 cifra o altro simile max 4 cifre in tutto) puoi moltiplicarne il valore per 10 o 100 e castarli ad intero
    3)dopo aver usato i punti 1 e 2 per ridurre al minimo i byte necessari (essendo questo lo scopo di base) puoi trasferirli con Serial.write(), che invia i byte che compongono il numero
  3. sull'altro Arduino leggi connla read() e poi... Giochi con i bit per riempire le variabili

Silente:
Puoi fare i seguenti passi:

  1. rendi i numeri da trasmettere del tipo più piccolo che permette di contenere il loro valore massimo (es. se un int non supererà mai 100 basta che sia di tipo byte)
  2. se usi float corti e a composizione fissa(3 cifre, 1 cifra o altro simile max 4 cifre in tutto) puoi moltiplicarne il valore per 10 o 100 e castarli ad intero
    3)dopo aver usato i punti 1 e 2 per ridurre al minimo i byte necessari (essendo questo lo scopo di base) puoi trasferirli con Serial.write(), che invia i byte che compongono il numero
  3. sull'altro Arduino leggi connla read() e poi... Giochi con i bit per riempire le variabili

scusa non capisco cosa vuoi dire "Giochi con i bit per riempire le variabili"
come faccio in ricezione ad abbinare le varie variabili?

Sai creare una struct?

Standardoil:
Sai creare una struct?

appunto è proprio quello non mi è chiaro

Beh,
Io proverei a creare una struttura di due membri e a giocarci un po'
Scrivere e leggere i singoli membri,
Creare due variabili struttura (della stessa struttura)
provare ad assegnare...
Leggere il k&r a quel capitolo...
Cose così insomma
Tutto lavoro propedeutico ma necessario

mi puoi fare un po di esempi
grazie

Il k&r ne è pieno

Standardoil:
Il k&r ...

... nel caso ci fosse qualche dubbio su tale acronimo ... QUI :slight_smile:

Guglielmo

P.S.: e comunque una semplice ricerchina con Google per "C structures" da appena ... 2’280’000’000 risultati :smiley:

Io ho quello sotto, quello col "falso" timbro 'Ansi C'
Quanti ricordi...

grazie dei vostri consigli

ho un altro problema
quando vengono inviate 2 stringhe diverse praticamente una dietro al altra arduino che riceve me le riceve insieme senza dividerle come posso fare per risolvere grazie

Non ho questo libro e vorrei comprarlo. Qualcuno mi può fare due o tre foto delle pagine giusto per darmi una idea di come è scritto, di come è spiegato (per esempio IF oppure il For Next) e di che occhiali ho bisogno :smiley: ?

Sembrerà strano, ma ci sono libri da cui fuggo e libri che mi affascinano. So che questa è la BIBBIA ma vorrei anche vedere se riesco a leggerla senza addormentarmi...

steve-cr:
So che questa è la BIBBIA ma vorrei anche vedere se riesco a leggerla senza addormentarmi...

... NON è un libro educativo (inteso come libro nato per insegnare), è piuttosto IL REFERENCE del 'C' :wink:

Guglielmo

Anche questo è un REFERENCE della Mitsubishi che è una delle mie bibbie, ma come vedi è chiaro e immediato.

compare-ladder.pdf (639 KB)

steve-cr:
Anche questo è un REFERENCE della Mitsubishi che è una delle mie bibbie, ma come vedi è chiaro e immediato.

Cosa ha a che vedere questa cosa con il K&R ? ? ? :o ... Che è anche lui sicuramente chiaro ed immediato, ma, ripeto, NON è un testo nato con uno scopo "educativo" (... come, ad esempio, QUESTO) ma come un "reference".

Guglielmo

Cerca di capirmi, era solo per farti vedere come era strutturato, ogni comando le sue pagine. Ti serve sapere come fare un ciclo FOR e vai a quel capitolo, come fare una istruzione IF e vai a quel capitolo.
Ecco perché chiedevo alcune foto delle pagine del K&R

Lo OP sono anni che combatte con problemi di programmazione. Adesso gli serve di documentarsi, non di 'raccattare righe di codice'
Dopo anni che bazzica arduino delle due l'una:
O è pronto per il k&r
Oppure non lo sarà mai
Caviamoci il dubbio

birrohgt:
grazie dei vostri consigli

ho un altro problema
quando vengono inviate 2 stringhe diverse praticamente una dietro al altra arduino che riceve me le riceve insieme senza dividerle come posso fare per risolvere grazie

birrohgt:
... quando vengono inviate 2 stringhe diverse praticamente una dietro al altra arduino che riceve me le riceve insieme senza dividerle come posso fare per risolvere grazie

Devi necessariamente mettere un qualche cosa che identifichi l'inizio e la fine di ciascuna stringa (soluzione ottimale) o, quantomeno, un carattere separatore che ti permette di capire il momento della fine di una e l'inizio dell'altra.

Guglielmo

gpb01:
Devi necessariamente mettere un qualche cosa che identifichi l'inizio e la fine di ciascuna stringa (soluzione ottimale) o, quantomeno, un carattere separatore che ti permette di capire il momento della fine di una e l'inizio dell'altra.

Guglielmo

grazie lo avevo immaginato ma come faccio poi in ricezione a fargli capire che è finita la stringa?

if (Serial1.available())       // lettura comandi da seriale
     {
      
        while(Serial1.available())
        {
         carattere = Serial1.read();
         comando += carattere;
         delay(10);
        }