如何从Arduino slave(通过I2C)读取Raspberry Pi 3B上的C中的浮点值?

时间:2018-01-05 11:18:36

标签: c arduino raspberry-pi i2c wiringpi

我的Arduino奴隶上有一个浮点变量,我想将它发送给我的Raspberry Pi 3 Model B大师。我所知道的是,我可能需要从Arduino发送一个字节数组,然后在我的Raspberry Pi上正确读取它。到目前为止,我没有运气this

我不知道如何阅读它,因为WiringPi库只提供int值作为回报(发送0-255就像魅力一样)。

已完成here,但对于Python和here。 C有一组不同的I2C库,并没有提供struct。

是否可以使用WiringPi从I2C读取一个字节数组并将其转换为C中的浮点数?

将Arduino上的数字乘以(除去逗号)并将其除以Raspberry Pi也是可以的,但是通过WiringPi发送超过255的问题仍然存在。

以下是我如何在Arduino上发送数据:

void sendData(){
  Wire.write((byte*) &floatNumber, 4);
}

以下是我如何在Raspberry上读取8位值(0-255)(例如Wire.write(129)):

int fd;
int data;
wiringPiSetup();

fd=wiringPiI2CSetup(0x04);

data=wiringPiI2CRead(fd);

ui->lcdNumber->display(data);

1 个答案:

答案 0 :(得分:0)

您可以在传输之前将浮点值转换为ASCII表示的浮点值(字符串),并将浮点值(字符串)的ASCII表示转换回Raspberry Pi 3上的浮点数。