RobertoBochet:
L'I2C è un protocollo seriale con word a 8bit, come suggerisce la tipologia di protocollo il metodo piu sensato per mandare i dati è serializzarli in un vettore di parole(byte). Per questi compiti è comoda l'implementazione di strutture.
strcut{
int a;
float b;
double c;
char d[10];
} frame;
Implementata la struttura sui due dispositivi (avendo l'accuratezza di verificare e gestire la compatibilità tra tipi) il compito risulta molto semplice, invio la serie di byte che inizia a &frame e finisce a &frame + sizeof(frame) - 1.
Wire.write(&frame, sizeof(frame));
Dall'altra parte non mi rimane che leggere i byte e collocarli serialmente al loro posto, il primo andrà all'indirizzo &frame il secondo a &frame+1 cosi via fino a &frame+sizeof(frame)-1. L'implementazione della lettura con una buona libraria I2C alle spalle si esegue anche con 3 comandi in croce.
RobertoBochet:
L'I2C è un protocollo seriale con word a 8bit, come suggerisce la tipologia di protocollo il metodo piu sensato per mandare i dati è serializzarli in un vettore di parole(byte). Per questi compiti è comoda l'implementazione di strutture.
strcut{
int a;
float b;
double c;
char d[10];
} frame;
Implementata la struttura sui due dispositivi (avendo l'accuratezza di verificare e gestire la compatibilità tra tipi) il compito risulta molto semplice, invio la serie di byte che inizia a &frame e finisce a &frame + sizeof(frame) - 1.
Wire.write(&frame, sizeof(frame));
Dall'altra parte non mi rimane che leggere i byte e collocarli serialmente al loro posto, il primo andrà all'indirizzo &frame il secondo a &frame+1 cosi via fino a &frame+sizeof(frame)-1. L'implementazione della lettura con una buona libraria I2C alle spalle si esegue anche con 3 comandi in croce.
Ciao,
volevo provare a mandare dati da arduino tramite il metodo delle strutture che mi hai consigliato, ma non ne vengo a capo. in particolare nell'espressione:
Wire.write(&frame, sizeof(frame));
mi dice:
expected primary-expression before ',' token