C'est ce que j'avais compris.
Voici deux petits programmes (master en émission et slave en réception) pour transmettre un float
// Master
//
#include <Wire.h>
const byte ADDRESS=20;
void setup()
{
Serial.begin(115200);
Wire.begin();
delay(500);
}
void loop()
{
static float val=12.2;
Wire.beginTransmission(ADDRESS);
// Serial.println("Envoi");
for (byte *p=(byte *)&val; p<(byte *)&val+sizeof val; p++)
Wire.write(*p);
Wire.endTransmission();
val+=0.01;
delay(3000);
}
// Slave
//
#include <Wire.h>
const byte ADDRESS=20;
void setup()
{
Serial.begin(115200);
Wire.begin(ADDRESS);
Wire.onReceive(receiveEvents);
Serial.println("Start reception");
}
void loop()
{
}
void receiveEvents(int numBytes)
{
Serial.print("Recu ");
Serial.print(numBytes);
Serial.println(" octets");
float val;
for (byte *p=(byte *)&val; p<(byte *)&val+numBytes; p++)
*p = Wire.read();
Serial.print("data: ");
Serial.println(val);
}
On peut bien sur l'adapter facilement pour la transmission d'une structure