Аппаратура Radiolink AT 9 2,4 ГГц
Электрическую схему и скетч выложить?
— естественно 😃
За схему и оптимизацию кода не ругайте сильно - это первый проект.
Скетч.
// 6-и позиционный переключатель для АТ9
// Пин 3 к контакту 2-х позиционника, который идёт на контроллер АТ9
// Пины 0 и 1 к контактам 3-х позиционника которые идут на контроллер
#define button1 A0
#define button2 A1
#define button3 A2
#define button4 A3
#define button5 A4
#define button6 A5
#define led1 3
#define led2 4
#define led3 5
#define led4 6
#define led5 7
#define led6 8
#define ledardu 13
#define upr1 0
#define upr2 1
#define upr3 2
#define buzzer 9
int flag = 0; // Флаг нажатой кнопки. 0 - отпущена, 1 - нажата
// Позволяет не повторять действия если кнопку удерживают
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(ledardu, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(upr1, OUTPUT);
pinMode(upr2, OUTPUT);
pinMode(upr3, OUTPUT);
// При старте или сбросе всегда будет включен 1-й режим
digitalWrite(upr1, HIGH);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, HIGH);
digitalWrite(led1, HIGH);
// Проигрываем звук (до, ре, ми) при старте
digitalWrite(ledardu, HIGH);
tone (buzzer, 262);
delay (100);
tone (buzzer, 294);
delay (100);
tone (buzzer, 330);
delay (150);
noTone(buzzer);
digitalWrite(ledardu, LOW);
}
// Функция проигрывания звука нажатой кнопки (переключения режима)
void beep()
{
digitalWrite(ledardu, HIGH);
tone (buzzer, 1500);
delay (100);
tone (buzzer, 1000);
delay (200);
noTone(buzzer);
digitalWrite(ledardu, LOW);
}
void loop()
{
if (analogRead(button1) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (analogRead(button2) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, LOW);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (analogRead(button3) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, LOW);
digitalWrite(upr3, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (analogRead(button4) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (analogRead(button5) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, LOW);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led6, LOW);
flag = 1;
}
else if (analogRead(button6) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, LOW);
digitalWrite(upr3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, HIGH);
flag = 1;
}
// Сброс флага если кнопка была нажата ранее, а сейчас отпущена
else if (analogRead(button1) != 0 && analogRead(button2) != 0 &&analogRead(button3) != 0 &&analogRead(button4) != 0 &&analogRead(button5) != 0 &&analogRead(button6) != 0 && flag !=0)
{
flag = 0;
}
delay(10);
}
Подскажите плиз, можно ли как то перешить приемник R6D первой версии без PPM, что бы у него ppm или s-bus появился? Или там в железе отличия существенные?
можно ли как то перешить приемник
Радиолинковские приёмники не перешиваются
В продолжении истории с небиндящимися приемниками. При включении звук и вибрация, вот видео:
А ВЧ модуль(RF-MODE) на аппе включен? Судя по видео-нет.
А ВЧ модуль на аппе включен?
Так как я пока еще не во всем разобрался в этой аппе - то где его можно отключить? Потому что целенаправленно ничего не отключал.
Меню PARAMETER->RF MODE->ON
У тебя Одна лампа гаснет ? а должно гореть обе , я у себя отключаю передатчик в настройках когда летаю в симуляторе чтобы не грелся и не сажал батарейку
Красная лампочка загорается если включен какой-то микс на конкретной модели, если миксы не активированы, то при включении ВЧ модуля будет гореть только зелёная лампочка.
Меню PARAMETER->RF MODE->ON
Сработало. Непонятно, почему вдруг отключилась эта опция… (
Впервые возникла необходимость воспользоваться тренерским разъемом (подключаю хедтрекер). Сервы камеры на 7 и 8 каналах. Возникает непонятная ситуация. Смотрю на дисплей servo, и вижу, что при включении тренеского режима шкалы этих каналов подскакивают сильно вверх. Соответственно и камера отворачивается и и задирает “голову”. Отпускаю - и камера возвращается в правильное положение. Есть возможность, и как настроить аппу, что бы при включении тренера машинки начинали свою работу с положения, при котором камера смотрит прямо? Если нужно, запишу видео этой проблемы для наглядности.
Калибровка хедрекера должна решить Вашу проблему, по типу - трекер в нуле на выходе 7-8 каналы 1 мсек.
Мужики. Кто ремонтировал приемник R9DS? У меня при краше оторвало антену от платы. Какую жилу куда припаивать? Спасибо!
Какую жилу куда припаивать?
Так там же видно - “подковка” под пайку оплётки, а по центру пятачок под центральную жилку.
Камрады, только постигаю летающую технику,всю жизнь машинами был увлечен, так вот собственно купил самик-тренер у человека, попросил с настройкой аппаратуры (Radiolink AT9S), а он в ней совершенно ничего не понял. Реально два часа элероны настраивали, а там еще и закрылки есть,которые так и не настроили. Сам он адепт Футабы,сказал что все непонятно и мороченно, короче оставив меня один на один с настройками. Во-первых какой тип летающего средства выбрать для простого самолет (Элероны + Закрылки ), подключать все в отдельные каналы ,или через Y кабель (это касается и элеронов и закрылок). У него все было в разные каналы воткнуто. Прошу сильно не пинать,тему маломальски осилил,но тут народ в основном волнует дальность и телеметрия))
Однозначно в разные. Вам же необходимо независимое управление. Тем более, что элероны работают в «противофазе»
Да настраивается всё как и в других аппаратурах, выбираем тип модели, вставляем соответствующие разъёмы серво в приёмник, настраиваем расходы, реверсы (если нужно), экспоненту (если нужно).
Обязательно проверить работу рулей перед полётом!
Доброго зоровья!
Полностью готов мой вариант переключателя полётных режимов АРМ для RadioLink AT9/AT9S.
В схеме удалил подтягивающие резисторы и включил подтяжку интегрированную в ATmega328.
Вот новая схема:
Вот новый скетч:
// 6-и позиционный переключатель полётных режимов АРМ для АТ9
// Пин 3 к контакту 2-х позиционника, который идёт на контроллер АТ9
// Пины 0 и 1 к контактам 3-х позиционника которые идут на контроллер
#define button1 A0
#define button2 A1
#define button3 A2
#define button4 A3
#define button5 A4
#define button6 A5
#define led1 3
#define led2 4
#define led3 5
#define led4 6
#define led5 7
#define led6 8
#define ledardu 13
#define upr1 0
#define upr2 1
#define upr3 2
#define buzzer 9
int flag = 0; // Флаг нажатой кнопки. 0 - отпущена, 1 - нажата
// Позволяет не повторять действия если кнопку удерживают
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(ledardu, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(upr1, OUTPUT);
pinMode(upr2, OUTPUT);
pinMode(upr3, OUTPUT);
// При старте или сбросе всегда будет включен 3-й режим
// В моём случае - это Stab.
digitalWrite(upr1, HIGH);
digitalWrite(upr2, LOW);
digitalWrite(upr3, HIGH);
digitalWrite(led3, HIGH);
// Подключаем интегрированные в ATmega328 резисторы подтяжки
digitalWrite(button1, HIGH);
digitalWrite(button2, HIGH);
digitalWrite(button3, HIGH);
digitalWrite(button4, HIGH);
digitalWrite(button5, HIGH);
digitalWrite(button6, HIGH);
// Задержка на 1 секунду перед стартовым звуком
// чтобы со звуком аппаратуры не совпадал
delay (1000);
// Проигрываем звук (до, ре, ми) при старте
digitalWrite(ledardu, HIGH);
tone (buzzer, 262);
delay (100);
tone (buzzer, 294);
delay (100);
tone (buzzer, 330);
delay (150);
noTone(buzzer);
digitalWrite(ledardu, LOW);
}
// Функция проигрывания звука нажатой кнопки (переключения режима)
void beep()
{
digitalWrite(ledardu, HIGH);
tone (buzzer, 1500);
delay (100);
tone (buzzer, 1000);
delay (200);
noTone(buzzer);
digitalWrite(ledardu, LOW);
}
void loop()
{
if (digitalRead(button1) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (digitalRead(button2) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, LOW);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (digitalRead(button3) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, LOW);
digitalWrite(upr3, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (digitalRead(button4) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
flag = 1;
}
else if (digitalRead(button5) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, LOW);
digitalWrite(upr2, HIGH);
digitalWrite(upr3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led6, LOW);
flag = 1;
}
else if (digitalRead(button6) == 0 && flag == 0)
{
beep();
digitalWrite(upr1, HIGH);
digitalWrite(upr2, LOW);
digitalWrite(upr3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, HIGH);
flag = 1;
}
// Сброс флага если кнопка была нажата ранее, а сейчас отпущена
else if (digitalRead(button1) != 0 && digitalRead(button2) != 0 && digitalRead(button3) != 0 && digitalRead(button4) != 0 && digitalRead(button5) != 0 && digitalRead(button6) != 0 && flag !=0)
{
flag = 0;
}
delay(10);
}
Вот внешний вид получившегося переключателя:
По умолчанию при старте включается режим привязанный к кнопке 3.
Она в моём варианте слева вверху.
Круто. Тут все видно. А то приходилось путаться в двух тумблера (двух позиционный и трех) для шести режимов, хотя на мониторе OSD и показывает режимы (не все) теряться можно.
А тут все на виду и легко доступно. Спасибо.
А тут все на виду и легко доступно.
Да, но минус не большой имеется!
Если Вы решите изменить режимы в самой аппаратуре, то придётся переделать и лицевую панель выносного модуля перепечатав наклейки с названиями тех режимов. На фотографиях видно, что первый и второй вариант лицевых панелей отличаются.
У меня лицевая панель напечатана лазерным принтером на плёнке.
Как идея на будущее, можно основную часть панели напечатать без названий режимов, а ещё на куске плёнки напечатать режимы и просто делать сменную вставку подсовывая плёнку с ними под плёнку лицевой панели. Или даже имена режимов можно просто на бумаге распечатать.