| Микроконтролери и електроника 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/ |
|