我有一个项目,这个项目完全依赖于 Arduino Due 和 Nano 33 BLE 之间的通信。
我想通过 UART 从位于 Nano 中的传感器作为浮点数据发送数据,并且我也以浮点的形式接收它。
但是使用Serial.read()
,数据将作为 int 发送,使用Parsefloat
,信息接收不正确。
有没有办法将传感器数据从 nano 发送到 Due 而不会出错?并以正确的形式?
这是纳米代码:
float h = 22.5;
float x, y, z;
int i = 0;
unsigned long previousMillis = 0;
const long interval = 500;
void TimerOhne();
void Acceleration();
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
if (!IMU.begin())
{
Serial.println("Failed to initialize IMU!");
while (1)
;
}
Serial.println("Read the serial");
}
void loop()
{
// TimerOhne();
Acceleration();
}
void TimerOhne()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
// save the last time you blinked the LED
previousMillis = currentMillis;
Serial1.write(h);
Serial.println(h);
Serial.println();
Serial.print("i ist: ");
Serial.print(i);
Serial1.write(66);
Serial1.write(i);
Serial.println();
i++;
}
}
void Acceleration()
{
if (IMU.accelerationAvailable())
{
IMU.readAcceleration(x, y, z);
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
x = x * 100;
y = y * 100;
Serial1.write(4);
Serial1.write(x);
Serial1.write(6);
Serial1.write(y);
Serial1.write(8);
Serial1.write(i);
i++;
Serial.print("X ist: ");
Serial.println(x);
Serial.print("y ist: ");
Serial.println(y);
}
}
这是到期代码
float r;
unsigned long previousMillis = 0;
const long interval = 500;
void setup()
{
// Begin the Serial at 9600 Baud
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
r = Serial1.read();
Serial.println(r);
}
}