Передача и прием нескольких потоков данных nrf24l01
- Войдите на сайт для отправки комментариев
Сб, 14/10/2017 - 14:04
Здравствуйте, подскажите как осуществить передачу и прием нескольких потоков данных с модулем nrf24l01
Вот пример 2 переменных резистора на передатчике, 2 сервопривода на приемнике
#include <SPI.h> #include "RF24.h" // Подключаем скачанную библиотеку RF24. RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала передачи int msg[1]; //переменная для отправки радио сигнала int potpin_1 = A0; // potentiometer int val_1; int potpin_2 = A1; // potentiometer 2 int val_2; void setup(void){ radio.begin(); radio.openWritingPipe(pipe); // Открываем канал передачи } void loop() { val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1,radio.write(msg, 1); val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 128, 255),msg[0] = val_2,radio.write(msg, 1); }
#include <Servo.h> #include <SPI.h> #include "RF24.h" Servo servo_1; //даём имена servo Servo servo_2; RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала int msg[1]; //переменная для приёма радио сигнала int data; //переменная для servo int pos; void setup() { servo_1.attach(3); // servo 1 pin3 servo_2.attach(6); // servo 2 pin6 radio.begin(); radio.openReadingPipe(1,pipe); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир } void loop() { if (radio.available())radio.read(msg, 1); if (msg[0] <128 && msg[0] >-1)data = msg[0], pos = map(data, 0, 127, 7, 177),servo_1.write(pos); if (msg[0] >127 && msg[0] <255)data = msg[0], pos = map(data, 128, 254, 9, 177),servo_2.write(pos); }
Допустим мне надо передать значения с 3го переменного резистора и принять эти данные на пина 4 на приемнике для мотора (в виде шим сигнала)
Как происходит разделение сигналов у nrf24l01 ведь данные с резистора 1 и 2 идут одновременно и разделяются лиш по значению данных (msg[0] <128 && msg[0] >-1) и (msg[0] >127 && msg[0] <255) а как сделать полноценное разделение сигналов? как то через msg[0], msg[1], msg[2] ?
Передавайте/принимайте структурой, в которой скопом все значения - profit.
А может есть способ разделить сигналы по каналам? Встречал в примерах скетчей такой код
А может есть способ разделить сигналы по каналам? Встречал в примерах скетчей такой код
По каналам - нет, по трубам - да.
Что значит по трубам? можно пример?
Что значит по трубам? можно пример?
В терминологии nRF24L01 - Pipe, читайте доку, там всё есть. До шести труб поддерживается, передавать можно к любую трубу, принимать - тоже из любой. При этом номер канала (несущая, грубо говоря) - у приёмника и передатчика должны быть одинаковы. Рассматривайте трубы как сделанные за вас идентификаторы пакетов разного типа, примерно в таком разрезе.
В доке к библиотеке всё описано, даже с примерами ;)
спасибо буду разбираться