Я не могу правильно получить строку, которую я отправил через nrf

Я использую Arduino Uno и nrf24l01. контролировать данные датчиков. Но это сообщение, которое получает master:

это мой подчиненный код.

void monitoring() {
    delay(10);
    radio.stopListening();
    int soilMoisture = analogRead(A5);
    int light = analogRead(A4);
    float temp = analogRead(A3);
    temp = temp * 0.48828125;
    int ltemp = int(temp);
    String message = String(soilMoisture) + "," + String(light) + "," +    String(ltemp);
    Serial.println(message);
    delay(200);
    radio.write(&message, sizeof(message));
    delay(50);
    radio.startListening();
    delay(10);
}

а вот и мой мастер-код.

while (1) {
    if (radio.available()) {
      char message[32] = "";
      radio.read(&message, sizeof(message));
      delay(500);
      Serial.println(message);
}

, 👍1


1 ответ


Лучший ответ:

1

Удалите & в строке мастер-кода измените

 radio.read(message, sizeof(message));

в

radio.read(message, sizeof(message));

message — это массив, поэтому либо вы должны передать адрес первого символа (&message[0]), либо просто передать message.

Еще одна проблема заключается в отправке строки в подчиненном коде (с использованием типа String). Этот тип все равно лучше не использовать, но, вероятно, вам придется преобразовать его в массив символов того же типа, что и в мастер-коде.

Для этого можно использовать функцию StringToCharArray, см. StringToCharArray. р>

,

Большое спасибо, @alireza