Передача и прием нескольких потоков данных 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, читайте доку, там всё есть. До шести труб поддерживается, передавать можно к любую трубу, принимать - тоже из любой. При этом номер канала (несущая, грубо говоря) - у приёмника и передатчика должны быть одинаковы. Рассматривайте трубы как сделанные за вас идентификаторы пакетов разного типа, примерно в таком разрезе.
В доке к библиотеке всё описано, даже с примерами ;)
спасибо буду разбираться