Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Моля за помощ радиоуправление на ардуйно
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=17962
Страница 1 от 1

Автор:  mitko1973 [ Пон Авг 09, 2021 10:34 pm ]
Заглавие:  Моля за помощ радиоуправление на ардуйно

Опитвам се да направя радиоуправление на 3 канала,но нещо не ми се получава.
ще може ли да помогнете къде бъркам?


[код]/* приемник для Pyth700
*
*/

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Servo.h>

RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно

int recieved_data[3]; // массив принятых данных
int servo1 = 3; // сервопривод на 3 цифровом
int servo2 = 4; // сервопривод на 4 цифровом
int servo3 = 5; // сервопривод на 5 цифровом

Servo myservo1;
Servo myservo2;
Servo myservo3;

byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

void setup() {
Serial.begin(9600); //открываем порт для связи с ПК


myservo1.attach(servo1);
myservo2.attach(servo2);
myservo3.attach(servo3);

radio.begin(); //активировать модуль
radio.setAutoAck(0); //режим подтверждения приёма, 1 вкл 0 выкл

radio.openReadingPipe(1, address[0]); //хотим слушать трубу 0
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!)

radio.setPALevel (RF24_PA_HIGH); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
//должна быть одинакова на приёмнике и передатчике!
//при самой низкой скорости имеем самую высокую чувствительность и дальность!!

radio.powerUp(); //начать работу
radio.startListening(); //начинаем слушать эфир, мы приёмный модуль
}

void loop() {
myservo3.attach(servo3); // это для того, чтобы пин для регулятора включился после файлсейва
byte pipeNo;
while ( radio.available(&pipeNo)) { // слушаем эфир со всех труб
radio.read( &recieved_data, sizeof(recieved_data) ); // чиатем входящий сигнал

myservo1.writeMicroseconds(recieved_data[0]); // повернуть серво на угол 0..180
// значение получено с 1 элемента массива
myservo2.writeMicroseconds(recieved_data[1]); // повернуть серво на угол 0..180
// значение получено с 1 элемента массива
myservo3.writeMicroseconds(recieved_data[2]); // повернуть серво на угол 0..180
// значение получено с 1 элемента массива

}

unsigned long started_waiting_at = millis();
while ( ! radio.available() ){ // FILESAVE
if (millis() - started_waiting_at > 700 && millis() - started_waiting_at < 5000){ //если связь прерывается от 800мс до 5000мс происходит остановка мтора
myservo3.writeMicroseconds(800);
// myservo3.detach();
}
if (millis() - started_waiting_at > 5000){ //через 5 секунд пин отключается
myservo3.detach();
}

}

}

[/код]


и предавателя


[код]/* передатчик для Pyth700 V2
*/

#include <SPI.h> // ++++++++
#include "nRF24L01.h" // +++++++++
#include "RF24.h" // ++++++++

RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно // ++++++++++


byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

byte pin_potent1 = 0; // потенциометр на 0 аналоговом - 2 канал пульта
byte pin_potent2 = 1; // потенциометр на 1 аналоговом - 1 канал пульта
byte pin_potent3 = 2; // потенциометр на 2 аналоговом - 3 канал пульта
byte pin_potent4 = 3; // потенциометр на 3 аналоговом
byte pin_potent5 = 4; // потенциометр на 4 аналоговом

//СУБТРИММЕРЫ СЕРВ
int subtrim1 = 90; //задаем СУБТРИММЕР 1 СЕРВЫ, можно добавлять отрицательные числа. Учавствует в формуле элефонов. уменьшение вниз.
int subtrim2 = -7; //задаем СУБТРИММЕР 2 СЕРВЫ, можно добавлять отрицательные числа. Учавствует в формуле элефонов. уменьшение вверх

//ЧУВСТВИТЕЛЬНОСТЬ КАНАЛОВ
int chuv1 = -730; // задаем чувствительность канала ЭЛЕРОНОВ 1 (in_ch1) это число учавствует в масштабировании значения канала. ОТРИЦАТЕЛЬНОЕ ЧИСЛО. При изменении числа в минус расход уменьшается
int chuv2 = -780; // задаем чувствительность канала РУЛЯ ВЫСОТЫ 2 (in_ch2) это число учавствует в масштабировании значения канала. ОТРИЦАТЕЛЬНОЕ ЧИСЛО. При изменении в минус расход уменьшается

//ЧУВСТВИТЕЛЬНОСТЬ ТРИММЕРОВ
byte trim1 = 40; // задаем чувствительность триммера ЭЛЕРОНОВ канала 5 (in_ch5) это число учавствует в масштабировании значения канала.
byte trim2 = 40; // задаем чувствительность триммера РУЛЯ ВЫСОТЫ канала 4 (in_ch4) это число учавствует в масштабировании значения канала.

byte pin_blok = 7; //пин с тумблером блокировки мотора

int transmit_data[3]; // массив, хранящий передаваемые данные


void setup() {
// Serial.begin(9600); //открываем порт для связи с ПК //*****

pinMode(pin_blok, INPUT_PULLUP); //задаем 7 пину тумблер с подводкой к 5 вольтам


radio.begin(); //активировать модуль // ++++++++++
radio.setAutoAck(0); //режим подтверждения приёма, 1 вкл 0 выкл +++++++++


radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных ++++++++++
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!) ++++++++++

radio.setPALevel (RF24_PA_HIGH); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX +++++++++
radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS ++++++++++
//должна быть одинакова на приёмнике и передатчике!
//при самой низкой скорости имеем самую высокую чувствительность и дальность!!

radio.powerUp(); //начать работу ++++++++++++
radio.stopListening(); //не слушаем радиоэфир, мы передатчик ++++++++++++
}

void loop() {

//МАСШТБИРОВАНИЕ ВСЕХ ПОТЕНЦИОМЕТРОВ
int in_ch1 = map(analogRead(pin_potent2), 0, 1023, 2350+chuv1, 550-chuv1); //масштабирует каналы и добавляет чувствительность канала 1 - ЭЛЕРОНЫ
int in_ch2 = map(analogRead(pin_potent1), 0, 1023, 550-chuv2, 2350+chuv2); //масштабирует каналы и добавляет чувствительность канала 2 - РУЛЬ ВЫСОТЫ
int in_ch3 = map(analogRead(pin_potent3), 0, 1023, 2200, 800); // здесь масштабируется канал ГАЗА
int in_ch4 = map(analogRead(pin_potent5), 0, 1023, trim2, -trim2); // здесь масштабируется ТРИММЕР РУЛЯ ВЫСОТЫ
int in_ch5 = map(analogRead(pin_potent4), 0, 1023, -trim1, trim1); // здесь масштабируется ТРИММЕР ЭЛЕРОНОВ

//КОРРЕКТИРОВКА ТРИММЕРОМ
int ch1_trim = in_ch1 + in_ch5; // добавляет к значениям каналов триммер - ЭЛЕРОНЫ
int ch2_trim = in_ch2 + in_ch4; // добавляет к значениям каналов триммер - РУЛЬ ВЫСОТЫ

//ФОРМУЛА ДЛЯ ЭЛЕВОНОВ
transmit_data[0] = ch1_trim + ch2_trim - 1500 + subtrim1 ; //формула ЭЛЕВОНА ЛЕВОГО
transmit_data[1] = ch1_trim - ch2_trim + 1500 + subtrim2 ; //формула ЭЛЕВОНА ПРАВОГО

//ПРОВЕРКА ТУМБЛЕРА БЛОКИРОВКИ МОТОРА
if(digitalRead(pin_blok)==0){transmit_data[2]=800;
}else{transmit_data[2] = in_ch3;
}




radio.powerUp(); // включить передатчик +++++++++++++
radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио +++++++++++++
radio.powerDown(); // выключить передатчик +++++++++++++


// Serial.print("ЭЛЕР="); Serial.print(in_ch1); Serial.print(" ");
// Serial.print("ВЫС="); Serial.print(in_ch2); Serial.print(" ");
// Serial.print("ГАЗ="); Serial.print(transmit_data[2]); Serial.print(" ");
// Serial.print("ТРИМ ВЫС="); Serial.print(in_ch4); Serial.print(" "); //*****
// Serial.print("ТРИМ ЭЛЕР="); Serial.print(in_ch5); Serial.print(" "); //*****
// Serial.print("ЭЛЕР С ТРИМ="); Serial.print(ch1_trim); Serial.print(" ");
// Serial.print("ВЫС С ТРИМ="); Serial.print(ch2_trim); Serial.print(" ");
// Serial.print("ЭЛЕВОНЫ = "); Serial.print(transmit_data[0]); Serial.print(" -- "); Serial.println(transmit_data[1]); //****


}[/quote]

Автор:  syscop [ Вто Авг 10, 2021 8:50 am ]
Заглавие:  Re: Моля за помощ радиоуправление на ардуйно

За начало махни коментарите пред Serial.print(... и виж какво печата.

Автор:  ike [ Вто Авг 10, 2021 3:02 pm ]
Заглавие:  Re: Моля за помощ радиоуправление на ардуйно

При nRF24L01 модулите има много ментета и не всички говорят по между си.
Първа стъпка преди да скочиш на някоя сложна програма, първо се увери че радиотата могат да комуникират по между си и с ардуинотата.
Потърси примери как да изпратиш 1 байт или да размигаш отдалечено светодиод и след това продължи нататъка.

Автор:  dan [ Вто Авг 10, 2021 4:29 pm ]
Заглавие:  Re: Моля за помощ радиоуправление на ардуйно

Й-то (и-краткото) кърти

Автор:  mitko1973 [ Чет Авг 12, 2021 6:05 pm ]
Заглавие:  Re: Моля за помощ радиоуправление на ардуйно

Справих се. Благодаря

Автор:  ike [ Чет Авг 12, 2021 7:38 pm ]
Заглавие:  Re: Моля за помощ радиоуправление на ардуйно

Какъв беше проблема?

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/