Ich benutze einen Pro Mini als I2C-Slave, der ein Doppel berechnet. Diese Doppelanforderung wird vom ESP8266-WiFi-Modul angefordert und über I2C byteweise gesendet.Senden Doppel über I2C von Arduino Pro Mini zu ESP8266
Jetzt versuche ich das Doppel am anderen Ende wieder zusammenzusetzen, aber es funktioniert nicht. Aktuelle Code auf Esp8266 läuft:
// ABOVE SETUP
union {
byte bytes[4];
double value;
} bytedouble;
// IN LOOP
while(Wire.available()){
byte read = Wire.read();
bytedouble.bytes[num] = read;
num++;
}
Serial.println(bytedouble.value); // Returns ovf/overflow
ich ein double
auf dem Arduino Pro Mini fand heraus, ist 4 Bytes, aber 8 Bytes auf dem Esp8266. Kann ich das konvertieren?
meine Vermutung ist, können Sie 'float' auf beiden Seiten verwenden, da Ihr Arduino offensichtlich keine doppelte Genauigkeit bietet. – user3528438
Stimmt, aber ich benutze Bibliotheken, die in fast jeder Methode "doubles" zurückgeben. Aber da "double" und "float" in Arduino gleich sind, kann ich einfach die "union" in ein "float" -Member ändern? Ich werde es versuchen! Danke :) –
Ich würde vorschlagen, dass Sie es explizit zu einem 'float' konvertieren, um die' union' in 'float' zu ändern, so dass der Code in der Zukunft nicht bricht, falls sich die Definition von' double' ändert. – user3528438