Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Вот мой вариант подключения и программирования радиомодуля NRF24L01+PA+LNA

2016-04-22

Все статьи →

Петр

Первый радиомодуль находится в пульте управления в паре с ардуино нано и подключается так (модуль держать ножками-контактами к себе):

Код для NANO

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

const uint64_t pipe = 0xF0F1F2F3F4LL; // указываем идентификатор передачи, "труба"

RF24 radio(3, 10); // указываем пины CE и CSN

void setup(){

radio.begin();

delay(2);

radio.setChannel(95); // выбираем канал от 0 до 126 – они имеют разную частоту

radio.setDataRate(RF24_1MBPS);

radio.setPALevel(RF24_PA_HIGH);

radio.openWritingPipe(pipe); // открываем трубу на передачу.

}

void loop()

{

int Val[2]; //массив для передачи данных

Val[0] = analogRead(4); //считываем значение с джойстиков в масив

Val[1] = analogRead(3);

radio.write(&Val, sizeof(Val)); // отправляем масив и указываем сколько байт пакет

}

Второй модуль находится в паре с ардуино мега 2560 и подключается так (модуль держать ножками-контактами к себе):

Код для MEGA 2560

int y = 0;

int x = 0;

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

const uint64_t pipe = 0xF0F1F2F3F4LL; // указываем идентификатор передачи, "труба"

RF24 radio(3, 10); // указываем пины CE и CSN

void setup(){

// TCCR3B = TCCR1B & 0b11111000 | 0x02; //поднимаем частоту шим, если надо

// TCCR4B = TCCR1B & 0b11111000 | 0x02;

radio.begin();

delay(2);

radio.setChannel(95); // выбираем канал от 0 до 126 – они имеют разную частоту

radio.setDataRate(RF24_1MBPS);

radio.setPALevel(RF24_PA_HIGH);

radio.openReadingPipe(1,pipe); // открываем первую трубу с идентификатором "pipe"

radio.startListening(); // включаем приемник, начинаем слушать трубу

}

void loop()

{

int Val[2]; //масив значений для приема

if (radio.available()){ // проверяем не пришло ли что в буфер.

radio.read(&Val, sizeof(Val)); // читаем данные, указываем сколько байт читать

if (Val[0] < 1023 && Val[0] > 524) //обработка значений и запуск моторов

{

y = map (Val[0],524,1023,0,255);

digitalWrite(8, LOW);

digitalWrite(7, HIGH);

analogWrite(5, y);

}

if (Val[1] < 1023 && Val[1] > 524)

{

x = map (Val[1],524,1023,0,255);

digitalWrite(9, HIGH);

digitalWrite(4, LOW);

analogWrite(6, x);

}

if (Val[0] < 500 && Val[0] > 0)

{

y = map (Val[0],500,0,0,255);

digitalWrite(7, LOW);

digitalWrite(8, HIGH);

analogWrite(5, y);

}

if (Val[1] < 500 && Val[1] > 0)

{

x = map (Val[1],500,0,0,255);

digitalWrite(4, HIGH);

digitalWrite(9, LOW);

analogWrite(6, x);

}

}

}

Работа радио модулей:

Если есть надобность в пояснении алгоритма обработки значений и запуск моторов, то можете посмотреть мою предыдущую статью по подключению и программировании монстр мотто шилд.

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Пока нет отзывов на эту статью.
оплата картами Visa и MasterCard