通过I2C从Arduino Pro Mini发送到ESP8266

时间:2016-11-21 18:20:04

标签: i2c esp8266 arduino-esp8266

我正在使用Pro Mini作为I2C从站,它计算双倍。 ESP8266 WiFi模块请求此双倍,并通过I2C逐字节发送。

现在我正试图在另一端重新组装双重但它不起作用。 ESP8266上运行的当前代码:

// 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

我发现Arduino Pro Mini上的double是4字节但ESP8266上有8个字节。我可以转换吗?

1 个答案:

答案 0 :(得分:0)

ESP8266是32位处理器,因此sizeof(int)为4且sizeof(double)为8.在ATmega328 sizeof(int)为2且sizeof(double)为4.但是,在两个处理器上{{} 1}}是4,这就是为什么你可以使用你在评论中提到的那种解决方法。

由于您要处理整数,最好在ESP8266的代码中使用sizeof(float)int代替uint32_t,因此长度将与Arduino的double。这样你就可以避免使用浮点数来生成相当多的不必要的代码字节。