liaison I2C entre 2 arduino

Bonjour,
J’essaie de transmettre un nombre de 10 chiffres d'une arduino a l'autre sans succès.

Wire.write(nombre);  arduino maitre
nombre = Wire.read();   // jusqu'a 255 c'est bon

 Wire.write( ((char*)&nombre)[0] );  // arduino maitre 
Wire.wire( ((char*)&nombre) [1]; // arduino maitre
((char*)&nombre)[0] = Wire.read();
 ((char*)&nombre)[1] = Wire.read();  // maxi 5 chiffres

SVP - ne postez pas de snippets (Snippets R Us!)

comme on n'a pas tout le code, on ne sait pas comment vous encapsulez vos write() et si vous avez une Wire.beginTransmission() et Wire.endTransmission()... on ne sait pas non plus quel est le type de nombre

La doc dit que vous avez 3 formes

Wire.write(value)
Wire.write(string)
Wire.write(data, length)

Parameters
value: a value to send as a single byte
string: a string to send as a series of bytes
data: an array of data to send as bytes
length: the number of bytes to transmit

donc votre premier exempleWire.write(nombre);  arduino maitrefonctionne bien jusqu'à 255

ensuite si votre nombre n'est pas un byte (1 seul octet) il faut alors transmettre une zone mémoire, donc prendre la 3ème forme Wire.write((uint8_t *) &nombre, sizeof nombre);

côté réception vous les avez octet par octet, donc il faut reconstituer le nombre en faisant des read et en se souvenant que l'architecture est little endian donc que le premier octet envoyé est celui de poids faible.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.