我正在尝试通过串行通信将2个传感器的数据从arduino uno发送到NodeMCU V3,
当我尝试从一个传感器发送数据时,一切正常,但是当我同时使用这两个传感器时,它会提供随机值
这是arduino发件人代码:
int water_sensor_pin = 8;
void setup()
{ pinMode(water_sensor_pin, INPUT);
Serial.begin(115200);
}
void loop()
{
// First sensor
int soil_moisture=analogRead(A0);
int output_value = map(soil_moisture,430,70,0,100);
Serial.write(output_value);
// Second sensor
int value = digitalRead(water_sensor_pin);
if(value==HIGH){
Serial.write('1');}
if(value==LOW){
Serial.write('0');}
}
这是接收者的代码部分
char msg[10];
.
.
.
if(Serial.available()>0){
// First sensor
int output_value = Serial.read();
Serial.println(output_value );
// Second sensor
char value = Serial.read();
Serial.println(value);
}
我希望两个传感器的输出都是正确的值
答案 0 :(得分:1)
在Arduino中使用Serial
时,您必须注意发送已知个字节,然后读取这个个字节。
在发送方尝试使用Serial.write(output_value,4);
之类的命令来发送四个字节,在接收方尝试Serial.readBytes(output_value,4);
以便读取您发送的四个字节,并且只读取它们。
当然,您可以对要发送的第二个值应用相同的技术,只是在发送布尔值时可能只需要一个字节即可。
希望有帮助!
编辑
如果您要发送buffer of bytes,上述技术将起作用。不幸的是,您有一个整数值……所以您可以尝试:
char
数组,byte
而不是int
,然后读取此单个{{1 }}在接收方。