Чтение и запись на одном и том же узле (центральном) с помощью сети RF24 на Arduino
Я хочу отправлять и получать сообщения на одном узле, используя библиотеку RF24Network, но не могу этого сделать, даже когда использую радио.stopListening()
.
Вот этот код:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio(9,10);
RF24Network network(radio);
struct payload_t{unsigned long int code; unsigned long int message;};
void setup(void) {
Serial.begin(9600);
SPI.begin();
radio.begin();
radio.setPALevel(RF24_PA_MAX);
radio.setDataRate(RF24_250KBPS);
radio.setAutoAck(false);
network.begin(108, 0);
}
void loop(){
network.update();
RF24NetworkHeader header;
payload_t payload;
if(network.available()) {
network.read(header, &payload, sizeof(payload));
Serial.println(payload.message);
// Я ХОЧУ ЗДЕСЬ ОТПРАВИТЬ ОБРАТНО В ПЕРЕДАТЧИК, но я не могу сделать это
radio.stopListening();
payload_t payload = { 2000, 15444452 };
RF24NetworkHeader header(2);
network.write(header, &payload, sizeof(payload));
}
}
Второй Узел:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio(9,10);
RF24Network network(radio);
struct payload_t{unsigned long int code; unsigned long int message;};
firstExec = 1;
void setup(void) {
Serial.begin(9600);
SPI.begin();
radio.begin();
radio.setPALevel(RF24_PA_MAX);
radio.setDataRate(RF24_250KBPS);
radio.setAutoAck(false);
network.begin(108, 2);
}
void loop() {
network.update();
if(firstExec) {
radio.stopListening();
payload_t payload = { 2000, 5555555 };
RF24NetworkHeader header(0);
network.write(header, &payload, sizeof(payload));
radio.startListening();
firstExec = 0;
}
RF24NetworkHeader header;
payload_t payload;
if(network.available()) {
network.read(header, &payload, sizeof(payload));
Serial.println(payload.message);
}
}
@djokage, 👍4
Обсуждение1 ответ
▲ 1
Библиотека говорит, что вы должны включить network.update()
в цикл ()
, чтобы узлы были синхронизированы. Поместите этот вызов в верхней части цикла()
в обоих узлах.
,
@SoreDakeNoKoto
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Не могли бы вы опубликовать часть вашего кода, с которой у вас возникли проблемы?, @Gerben
Как насчет того, чтобы включить вашу попытку отправить данные, чтобы мы могли увидеть, где вы ошиблись?, @Majenko
Извините за это, вот полный скрипт с кодом отправки., @djokage
Как насчет кода для другого узла?, @SoreDakeNoKoto
Извините, что пропустил network.update (), потому что я скопировал только необходимый код и, как я всегда ставлю это в верхней части цикла, я пропустил его при копировании, @djokage
Я голосую за то, чтобы закрыть этот вопрос, потому что он уже больше года остается без ответа., @Chris Stratton