Я использую Pro Mini в качестве ведомого устройства I2C, которое вычисляет двойной. Этот двойной запрос запрашивается модулем WiFi ESP8266, и он отправляется по байтам I2C байтом.Отправка с двух сторон через I2C от Arduino Pro Mini до ESP8266
Теперь я пытаюсь собрать двойной на другом конце, но он не работает. Текущий код работает на 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
Я узнал double
на Arduino Pro Mini составляет 4 байта, но 8 байт на ESP8266. Могу ли я преобразовать это?
Мое предположение, вы можете использовать 'float' с обеих сторон, так как ваш Arduino, очевидно, не обеспечивает двойную точность вообще. – user3528438
Верно, но я использую библиотеки, которые возвращают 'doubles' почти в каждом методе. Но, видя, что '' '' '' '' '' '' '' '' '' 'одинаковые в Arduino, могу ли я просто изменить' union' на 'float'? Я попробую! Спасибо :) –
Я бы предложил вам явно преобразовать его в 'float' в дополнение к изменению' union' на 'float', чтобы код не прерывался в будущем, если будет изменено определение' double'. – user3528438