Запись / чтение в форме, которую вы используете, только для отдельных байтов. Поплавок в Arduino состоит из 4 байтов. Вы можете использовать write, чтобы отправить серию байтов, и вы должны прочитать эти байты, поступающие один за другим, в зависимости от скорости последовательного порта. Синхронизация / потерянные байты могут быть проблемой, здесь в этом простом решении я предполагаю лучшее.
Отправитель:
float val = 1.234;
void setup() {
Serial.begin(19200);
}
void loop() {
Serial.write((byte*)&val,4);
delay(3000);
}
Получатель:
#include <HardwareSerial.h>
HardwareSerial receiver(2);
void setup()
{
receiver.begin(19200, SERIAL_8N1, 16, 17);
Serial.begin(9600);
}
void loop()
{
if(receiver.available() > 0)
{
delay(5); // wait for all 4 bytes
byte buf[4];
byte* bp = buf;
while (receiver.available()) {
*bp = receiver.read();
if (bp - buf < 3) bp++;
}
float received = * (float*)buf;
Serial.println(received, 3); // printing the result to the serial monitor
}
delay(100); // not really required, should be smaller than sender cycle
}