Как отправить строки с помощью модуля Arduino nRF24L01 - декодировать / кодировать строки - PullRequest
0 голосов
/ 27 апреля 2019

Я использую 2 сенсорных модуля (DHT11 и TSL2561) с Arduino Nano и хочу отправить измеренные значения через модуль nRF24L01 на другой модуль nRF24L01. Я проверил другие темы, но пока ничего не получалось.

То есть код передатчика:

void loop() {

  String stringAll, stringTemp1, stringTemp2, stringHum1, stringHum2, stringLux1, stringLux2;    

  byte temperature = 0;
  byte humidity = 0;
  byte data[40] = {0};
  if (dht11.read(pinDHT11, &temperature, &humidity, data)) {
    Serial.print("Read DHT11 failed");
    return;
  }

  stringAll += (int)temperature;
  stringAll +=  ", ";           
  stringAll += (int)humidity;
  stringAll += ", ";              

  sensors_event_t event;
  tsl.getEvent(&event);

  if (event.light) {
    stringAll += event.light;
    stringAll += " lux";
  }

  radio.write(&stringAll, sizeof(stringAll));
  // Serial.println(stringAll);

  delay(1100);                                          
}

Это формат (пример) строки, если я тестирую с помощью «Serial.println (stringAll)»: 25, 36, 123,00 люкс

То есть код получателя:

void loop() {
  //Serial.println("omfg");
  if (radio.available()) {

    // char stringAll[1000] = "";
    String stringAll;

    len = radio.getDynamicPayloadSize();
    radio.read( &stringAll, len );
    Serial.println(stringAll);

  }
}

В этом случае на последовательном мониторе приемника ничего не появляется. Если я использую "char stringAll [1000] =" ";" вместо "String stringAll;", то в каждой строке последовательного монитора появляются только два квадрата.

Я понятия не имею, как решить эту проблему, и был бы признателен, если бы кто-то мог мне помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...