Problème d'envoi de float sous forme d'octet

Bonjour victorelec

Voilà un petit exemple, sur Arduino Mega, entre leur port Serial1 à 115 200

Côtè émetteur

struct donneesMesureesDef
{float voltageA; float voltageB; float voltageC;};
donneesMesureesDef donneesAtransmettre;

unsigned long loopTime = 500;     // Toutes lkes 500 milliSecondes
unsigned long loopTimeR = millis();

void setup()
{
	Serial.begin(115200);
	Serial1.begin(115200);
	
	donneesAtransmettre.voltageA = 12.55;
	donneesAtransmettre.voltageB = 2.03;
	donneesAtransmettre.voltageC = 3750.20;
}

void loop()
{
	if (millis()-loopTimeR >= loopTime)
	{
		Serial1.write((byte *)&donneesAtransmettre, sizeof donneesAtransmettre);
		
		donneesAtransmettre.voltageA += 0.25;
		donneesAtransmettre.voltageB += 1.1;
		donneesAtransmettre.voltageC += 110.02;
		
		loopTimeR = millis();
	}
}

Côtè récepteur

struct donneesMesureesDef
{float voltageA; float voltageB; float voltageC;};
donneesMesureesDef donneesAtransmettre;

bool nouvellesDonnes = false;

void setup()
{
	Serial.begin(115200);
	Serial1.begin(115200);
}

void loop()
{
	if (Serial1.available())
	{
		Serial1.readBytes((byte*)&donneesAtransmettre, sizeof donneesAtransmettre);
		nouvellesDonnes = true;
	}
	
	if (nouvellesDonnes)
	{
		Serial.println("\n");
		Serial.print(donneesAtransmettre.voltageA); Serial.print("\t");
		Serial.print(donneesAtransmettre.voltageB); Serial.print("\t");
		Serial.print(donneesAtransmettre.voltageC); Serial.print("\t");
		
		nouvellesDonnes = false;
	}
}

Côté émetteur, les 3 valeurs float sont incrémentées à chaque émission, pour voire les "mouvements" au récepteur.

Cordialement
jpbbricole