Я всюду искал ответ на этот вопрос, но я в тупике.У меня есть 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, поэтому любая помощь будет оценена!