我有2个使用I2C作为主/从通信的arduinos。从属设备必须向主设备发送一个像rpm值一样变化的值。 该rpm值可以是0至9999 rpm。 我想将此值从slave发送到master作为4字节消息
chk_1
如何确保rpm总是4字节?
答案 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);