Проблемная работа сервопривода с NRF24L01

Нет ответов
julVern
Offline
Зарегистрирован: 11.02.2016

Добрый день, уважаемые ардуинщики. Осваиваю передачу данных по радиомодулю между двумя ардуино. Столкнулся с проблемой, над решением которой бьюсь уже не одну неделю.

Коротко по железу. Радиомодули подключены к адаптерам. Передающим устройством является NANO, принимающее UNO. К UNO подключен Мотор Шилд, к которому подключен один сервопривод. Управлени серво от джойстика(хотя и пробовал и потенциометр и кнопку). Питание на серво отдельное от 9v через понижающий модуль до 5 V (пробовал и через конденсаторы) Задача просто управлять сервой.

Суть проблемы в следующем. После загрузки скетчей, происходит вибрация сервопривода в такт пульсации светодиода на принимающей плате (RX). На команды джойстика сервопривод отвечает, если только есть delay в loop приемника. Причем заметил, что если ставить delay ниже 500, то серва виснет и не работает,В serial все ок показывает, данные по работе джойстика идут.

 

При  подключении моторчиков к мотор шилд такой проблемы нет, все работает.

Тестировал и кнопку,и джойстик,и потенциометр на одной только UNOбез модуля NRL24L01. Все работает идеально. Серво не пульсирует, не дергается. Сломал голову над догадками, подскажите пожалуйста где копать.

Скетч прилагаю. Помогите советом пожалуйста. Где искать проблему?

#include <Servo.h>

#include <SPI.h>

#include "RF24.h"
#include <AFMotor.h>
Servo myservo; //даём имена servo
RF24 radio(9,10);

const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала

int msg[1]; //переменная для приёма радио сигнала

int data; //переменная для servo

int pos;
void setup()

{
Serial.begin(9600);

myservo.attach(10);



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),myservo.write(pos);


if (msg[0] >127 && msg[0] <255)data = msg[0], pos = map(data, 128, 254, 9, 177),myservo.write(pos);


Serial.println(pos);
delay(500);
}
#include <SPI.h>
#include "RF24.h" // Подключаем скачанную библиотеку RF24.
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала передачи
int msg[1]; //переменная для отправки радио сигнала
int potpin_1 = A1; // potentiometer

int val_1;

int potpin_2 = A2; // potentiometer 2

int val_2;

void setup(void){
pinMode(potpin_1, INPUT);
pinMode(potpin_2, INPUT);
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);

}