Использование NRF24L01 между 2 arduinos для отправки нескольких значений датчика - PullRequest
0 голосов
/ 11 декабря 2018

Я всюду искал ответ на этот вопрос, но я в тупике.У меня есть 2 arduinos, которые общаются с помощью трансиверов NRF24L01.Я хочу отправить 2 значения датчика, одно из которых является плавающим, а другое целым числом.Я попробовал:

1) Отправлять их по отдельности.Значения, кажется, мешают при печати, создавая дополнительный символ 0 и символ новой строки в каждом цикле.

2) Объединение обоих значений в строке.С другой стороны строка не читается.

Я пытаюсь получить данные в следующем формате:

sensor1Val, sensor2Val

Вот пример кода моего передатчика:

#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>

RF24 Transmitter(9, 10);

const byte address[6] = {"00001"};

int sensorVal1 = 0;
float sensorVal2 = 2.5;

void setup() {
Serial.begin(9600);

//TRANSMITTER STUFF//
Transmitter.begin(); 
Transmitter.openWritingPipe(address); 
Transmitter.setPALevel(RF24_PA_MIN); 
Transmitter.setChannel(87); 
Transmitter.setDataRate(RF24_250KBPS); 
Transmitter.stopListening(); 
}



void loop() 
{
Serial.print(sensorVal1);
Serial.print(", ");
Serial.println(sensorVal2);

Transmitter.write(&sensorVal1, sizeof(sensorVal1));
Transmitter.write(&sensorVal2, sizeof(sensorVal2));
delay(1000); //Wait 1s between measurements
sensorVal1++;
sensorVal2++;
} 

Вот пример кода моего получателя:

#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>

RF24 Receiver(9, 10); 


const byte address[6] = {"00001"}; 
at a certain address (integer, 6)

int receive1;
float receive2;

void setup() {
Serial.begin(9600); 
Receiver.begin(); 
Receiver.openReadingPipe(0, address); 
Receiver.setPALevel(RF24_PA_MIN); 
Receiver.setChannel(87);
Receiver.setDataRate(RF24_250KBPS); 
Receiver.startListening(); 

}

void loop() {


 if (Receiver.available()) { 

    Receiver.read(&receive1, sizeof(receive1)); 
    Receiver.read(&receive2, sizeof(receive2));

    Serial.print(receive1);
    Serial.print(", ");
    Serial.println(receive2);

    delay(100);

   }
 }

Я новичок в Arduino, поэтому любая помощь будет оценена!

1 Ответ

0 голосов
/ 29 января 2019

Отправка данных с использованием структуры.

struct MyStruct {

  int sensorVal1;
  float sensorVal2;

};

Код отправителя

MyStruct myStruct;
// initialise the members of the structure with the values you want
Transmitter.write(&myStruct, sizeof(myStruct));

Сторона получателя

MyStruct myStruct;
Receiver.read(&myStruct, sizeof(myStruct));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...