Arduino格式整数为4个字节,用于发送到I2C

时间:2017-06-07 09:10:54

标签: arduino i2c

我有2个使用I2C作为主/从通信的arduinos。从属设备必须向主设备发送一个像rpm值一样变化的值。 该rpm值可以是0至9999 rpm。 我想将此值从slave发送到master作为4字节消息

chk_1

如何确保rpm总是4字节?

2 个答案:

答案 0 :(得分:1)

您可以使用字符数组来发送字节序列。在Arduino int中是16位大。如果您需要始终发送4个字节,可能的解决方案是使用掩码来获取前2个字节,并用零填充其余字节。

void SendInt(int value)
{
    char values[4];
    values[0] = value & 0xff;
    values[1] = (value & 0xff00) >> 8;
    values[2] = 0;
    values[3] = 0;

    Wire.write(values, 4);
}

答案 1 :(得分:0)

在此链接上,您可以查看arduinos数据类型列表

https://playground.arduino.cc/Code/DatatypePractices

您可能想要使用long或unsigned long。另一种方法是将rpm值转换为字符串,并在需要时在左侧填充零。

Wire.write(""+rpm);

零填充示例:

String zeros = "";
if(rpm < 1000)
    zeros += "0";
if(rpm < 100)
    zeros += "0";
if(rpm < 10)
    zeros += "0";

Wire.write(zeros + rpm);