Не отображает данные о принятой информации
- Войдите на сайт для отправки комментариев
Ср, 06/04/2022 - 21:20
Здравствуйте. Использую модуль NRF24L01 чтобы передавать данные между устройствами. Посылаю с одного устройства числовую информацию, и хочу отобразить на другом. Только вот оно не отображается в мониторе порта. В чём может быть ошибка?
// Client A
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio(10,9); //nRF2401 (CE,CSN)
RF24Network network(radio); //Include the radio in the network
const uint16_t server = 0000; // Address of the Server
uint16_t this_node;
long FirstrandAddress;
long SRFA = 100;//code send a request for an address.
void setup() {
// put your setup code here, to run once:
SPI.begin();
radio.begin();
network.begin(90,this_node); //(channell,node address)
radio.setDataRate(RF24_1MBPS);
}
void loop() {
network.update();
//==Receiving ==//
while(network.available()){ // Is there any incoming data?
RF24NetworkHeader header;
unsigned long incomingData;
network.read(header,&incomingData,sizeof(incomingData)); // Read the incoming data
}
// == send a request for an address. ==//
FirstrandAddress = random(10000,30000);
if(this_node == 0){
Send_request_for_address(FirstrandAddress);
}
}
// Function request_for_address
uint16_t Send_request_for_address(long firstaddress){
RF24NetworkHeader header(server);
bool firsAddress = network.write(header,&firstaddress,sizeof(firstaddress)); // Send first addres of device
bool code_of_request = network.write(header,&SRFA,sizeof(SRFA));
}
-------------------------------------------------------------------------------------------------------------------
//Server
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio(10,9); //nRF24L01 (CE,CSN)
RF24Network network(radio); // Include the radio in the network
const uint16_t this_node = 0000 ;// Address of the server
void setup() {
Serial.begin(9600);
SPI.begin();
radio.begin();
network.begin(90,this_node); //(channel, node address)
radio.setDataRate(RF24_1MBPS);
}
void loop() {
network.update();
if(network.available()){ // Is there any incoming data?
RF24NetworkHeader header;
unsigned long incomingData;
network.read(header,&incomingData,sizeof(incomingData));// Read the incoming data
if(incomingData!=0)
Serial.println(incomingData);
else{
Serial.println("No data!");
}
}
}
очень неаккуратный код. Это ваш первый скетч?
В одном коде node задан, в другом нет. Причем там где задан - он равен 00000. Вы думаете это что? - целое число? :)
Переменная incomingdata не инициализирована и при этом проверяется на равенство нулю... так оно точно работать не будет...
Отсылка данных идет непрерывно, без какого-либо интервала... Вы уверены, что это правильно - обрушивать на приемник непрерывный поток сообщений? Он не захлебнется?
В общем не код, а шляпа какая-то...