Все нормально. Я сделал по примерам. Тот код я привел без использования Network - о чем еще поначалу говорил.в этой библиотеке не нужно трубу открывать, используй примеры с сайта, если у тебя модули одинаковые и из одной партии, то все будет работать
const byte* hello[8] = { 112, 144, 1, 2, 3, 4, 5, 6 }; // массив типа byte
// передаем массив из 8-и элементов
RF24NetworkHeader header(/*to node*/ other_node);
bool ok = network.write(header,hello,16); // 16 - УКАЗАНО В ДВА РАЗА БОЛЬШЕ ЧЕМ ПЕРЕДАВАЕМЫЙ МАССИВ
/* Передатчик */
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio(7,8);
// Network uses that radio
RF24Network network(radio);
// Address of our node
const uint16_t this_node = 1;
// Address of the other node
const uint16_t other_node = 0;
const uint16_t other_node2 = 2;
// How often to send 'hello world to the other unit
const unsigned long interval = 500; //ms
// When did we last send?
unsigned long last_sent;
void setup(void)
{
Serial.begin(57600);
SPI.begin();
radio.begin();
network.begin(/*channel*/ 90, /*node address*/ this_node);
}
void loop(void)
{
network.update();
unsigned long now = millis();
if ( now - last_sent > interval )
{
last_sent = now;
printf("Sending...\r\n");
const byte* hello[8] = { 112, 144, 1, 2, 3, 4, 5, 6 }; // массив типа byte
// передаем массив из 8-и элементов
RF24NetworkHeader header(/*to node*/ other_node);
bool ok = network.write(header,hello,16); // 16 - УКАЗАНО В ДВА РАЗА БОЛЬШЕ ЧЕМ ПЕРЕДАВАЕМЫЙ МАССИВ
const char* hello2 = "Hello, world! 2"; // массив типа char
RF24NetworkHeader header2(/*to node*/ other_node2);
ok = network.write(header2,hello2,strlen(hello2));
}
}
/* Приемник */
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
// nRF24L01(+) radio attached to SPI and pins 8 & 9
RF24 radio(7,8);
// Network uses that radio
RF24Network network(radio);
// Address of our node
const uint16_t this_node = 0;
// Address of the other node
const uint16_t other_node = 1;
void setup(void)
{
Serial.begin(57600);
Serial.println("RF24Network/examples/helloworld_rx/");
SPI.begin();
radio.begin();
network.begin(/*channel*/ 90, /*node address*/ this_node);
}
void loop(void)
{
// Pump the network regularly
network.update();
// Is there anything ready for us?
if ( network.available() )
{
// If so, grab it and print it out
RF24NetworkHeader header;
static byte message[16];
network.read(header,message,sizeof(message));
Serial.print("Received: ");
for (byte k = 0; k<16; k++){
Serial.print(message[k]);
Serial.print("\t");
}
Serial.println("");
}
}
ну отправлять просто гольные единичные переменные это для моего проекта не прокатит... ваяю "центральный пульт" управления, нужно отправлять коды команд и параметры к этим командам, чтобы приемник принял, считал код команды, запустил нужную свою функцию и подставил в нее пришедшие параметры... своего рода с ЦП будет программироваться поведение удаленных узлов... ) как-то так.адреса нужно писать двумя цифрами, типа 00 или 01, а далее тремя 011 или 021, по крайней мере так в даташите написано, и я не видел что бы можно было массивы отправлять, я отправлял только переменные с датчиков, и делал беспроводные выключатели дальнобойные
Да особой разница нет как написать 00 или 0, 01 или 1, 02 или 2 - библа просто при разборе адреса делает битовый сдвиг. и для компилятора 00 и 0 - это одно и тоже, число с одним сегментом. если написать 10 - это уже двухсегментное число, и 000010 - тоже двухсегментное число. Я не понимаю, че авторы замудрили с описанием. Написали бы, что адресация производится побитовым сдвигом справа налево, и все... видимо что такое битвый сдвиг слишком сложно для аудитории ардуины. как-то так )адреса нужно писать двумя цифрами, типа 00 или 01, а далее тремя 011 или 021
Arduino: 1.8.5 (Windows 10), Плата:"Arduino Nano, ATmega328P"
C:\Program Files (x86)\Arduino\libraries\RF24Network-1.0.8\RF24Network.cpp: In member function 'uint16_t RF24Network::read(RF24NetworkHeader&, void*, uint16_t)':
C:\Program Files (x86)\Arduino\libraries\RF24Network-1.0.8\RF24Network.cpp:662:35: error: 'rf24_min' was not declared in this scope
maxlen = rf24_min(maxlen,bufsize);
^
C:\Program Files (x86)\Arduino\libraries\RF24Network-1.0.8\RF24Network.cpp: In member function 'bool RF24Network::write(RF24NetworkHeader&, const void*, uint16_t, uint16_t)':
C:\Program Files (x86)\Arduino\libraries\RF24Network-1.0.8\RF24Network.cpp:762:79: error: 'rf24_min' was not declared in this scope
uint16_t fragmentLen = rf24_min((uint16_t)(len-offset),max_frame_payload_size);
^
exit status 1
Ошибка компиляции для платы Arduino Nano.
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Если честно, я отказался от этих модулей и RF24Network в пользу Wifi и Blynk, уж очень не стабильно у меня все это работало, эти модули хорошо работают когда их 2, во всяких пультах например, а когда их много они сбоить начинают, ну или это только у меня такая проблема была, я хзЧуть с ума не сошёл, но заставил скетч компилироваться. Всё дело, как оказалось, в конфликтах между двумя библиотеками: RF24 и RF24Network.
Скачал последние версии обеих библиотек и всё наладилось. Продолжаю!
А переходник запитан от стабилизатора нанки?нанке переходник не работает.