私はPro MiniをI2Cスレーブとして使用しています。これはダブルを計算します。この2倍はESP8266 WiFiモジュールによって要求され、バイトごとにI2C経由で送信されます。Arduino Pro MiniからESP8266へのI2Cの二重送信
もう一方の端でダブルを再構成しようとしていますが、動作しません。 ESP8266上で実行されている 現在のコード:私はArduinoのプロミニにdouble
を発見
// 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
は4つのバイトが、ESP8266の8バイトです。これを変換できますか?
私の推測では、あなたのArduinoは明らかに倍精度を提供していないので、両方の側で 'float'を使うことができます。 – user3528438
真実ですが、ほとんどすべてのメソッドで 'double 'を返すライブラリを使用しています。しかし、「ダブル」と「フロート」とはArduinoで同じですが、私は 'union'を' float'メンバーに変更できますか?私はそれを試してみます!ありがとう:) –
明示的に 'float'に変換して' union'を 'float'に変更することをお勧めします。そうすれば、' double'の定義が変更された場合に将来コードが破られることはありません。 – user3528438