Arduino 如何正确发送和接收多个传感器';通过串行通信传输数据

Arduino 如何正确发送和接收多个传感器';通过串行通信传输数据,arduino,nodemcu,serial-communication,Arduino,Nodemcu,Serial Communication,我正试图通过串行通信将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_mo

我正试图通过串行通信将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); 

 }

我希望两个传感器的输出都是正确的值

在Arduino中使用
串行
时,您必须注意发送已知的字节量,然后读取字节量

在发送端尝试类似于
串行写入(输出值,4)的操作
以发送四个字节,在接收端,
串行.readBytes(输出值,4)
以读取您发送的四个字节,并且仅读取它们

当然,您可以对要发送的第二个值应用相同的技术,除了您可能只需要一个字节,因为您似乎要发送一个布尔值

希望有帮助

编辑

如果您需要发送电子邮件,上述技术将起作用。不幸的是,您有一个整数值…因此您可以尝试:

  • 将值转换为已知大小的
    char
    数组
  • 使用这样一个事实,即您尝试发送的值可以放入,因此将其声明为
    字节
    ,而不是
    int
    ,然后在接收方读取此单个
    字节

假设我转换了char数组的值,下一步该怎么做?通常,您应该能够使用
写入(您的数组,数组的len)发送它
并在另一侧使用
readBytes()读取它。