Отговори на тема  [ 6 мнения ] 
Моля за помощ радиоуправление на ардуйно 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Юни 15, 2013 10:04 am
Мнения: 99
Мнение Моля за помощ радиоуправление на ардуйно
Опитвам се да направя радиоуправление на 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]


Пон Авг 09, 2021 10:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение Re: Моля за помощ радиоуправление на ардуйно
За начало махни коментарите пред Serial.print(... и виж какво печата.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Вто Авг 10, 2021 8:50 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Моля за помощ радиоуправление на ардуйно
При nRF24L01 модулите има много ментета и не всички говорят по между си.
Първа стъпка преди да скочиш на някоя сложна програма, първо се увери че радиотата могат да комуникират по между си и с ардуинотата.
Потърси примери как да изпратиш 1 байт или да размигаш отдалечено светодиод и след това продължи нататъка.

_________________
Warriors of the Night, ASSEMBLER!!!


Вто Авг 10, 2021 3:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: Моля за помощ радиоуправление на ардуйно
Й-то (и-краткото) кърти

_________________
Хайде де!


Вто Авг 10, 2021 4:29 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Юни 15, 2013 10:04 am
Мнения: 99
Мнение Re: Моля за помощ радиоуправление на ардуйно
Справих се. Благодаря


Чет Авг 12, 2021 6:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Моля за помощ радиоуправление на ардуйно
Какъв беше проблема?

_________________
Warriors of the Night, ASSEMBLER!!!


Чет Авг 12, 2021 7:38 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни