|
|
|
Канал Elite: Dangerous: «Самодельные панели управления для Elite: Dangerous» |
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
RenderG : |
Там разные тактильно колпачки на кнопках группами по три (под три пальца, указательный, средний, безымянный). Там чередуются выпуклые, впуклые и ровные. Тумблер с закрывашкой идентифицируется вообще элементарно и не позволит, скажем, груз в космос выкинуть.
Про мелкое, так скажу. Мне ручка от дефендер кобры м5 мала. В обзорах все жалуются, что большая. у меня в нее тупо рука не влазит, Так что с размерами и эргономикой там все очень даже норм.
|
Все равно мне панель кажется очень скучкованной, и кнопки(пипки сами) внешне одинаковые только разных цветов - может фото мелкое слишком, не видно торцы.
То что сброс груза важная кнопка и ее нажатие вызовет нежелательные эффекты ,я в своем варианте панели могу скомпенсировать функцией долгого нажатия(3 секундного скажем) для того чтобы избранные кнопки с короткого нажатия не активировались. Тут вообще мильён возможностей для реализации. Но тумблеры эти с закрывашками - это капец, все за них цепляется и тугое.
|
|
|
mc_ 408 EGP
Рейтинг канала: 9(1035) Репутация: 41 Сообщения: 2841
Зарегистрирован: 09.04.2010 |
|
У меня вообще не назначена кнопка "сброс груза"
Тем более не пойму зачем её на джойстик выносить.
|
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
mc_ : |
У меня вообще не назначена кнопка "сброс груза"
Тем более не пойму зачем её на джойстик выносить.
|
Ну это же моя залочка функций: если не понравится, можно сделать чем угодно, напечатай только пленку с текстом нужным и повесь в настройках на что угодно. Все конфигурабельно.
|
|
|
AnrDaemon 857 EGP
Рейтинг канала: 17(3131) Репутация: 37 Сообщения: 12292
Зарегистрирован: 17.10.2004 |
|
NailMan : |
Все равно мне панель кажется очень скучкованной, и кнопки(пипки сами) внешне одинаковые только разных цветов - может фото мелкое слишком, не видно торцы.
|
Да, по одной фотке, без "пальцев" для ориентира это определить сложно.
Посмотри видео анбоксинга такой панели, там лучше видно. Ну а я такие "колпачки" в руках держал, так что представляю себе реальные размеры. Плюс там кнопки разной высоты в нужных местах, кроме того что тактильно различаются.
Так что всё достаточно продумано.
_________________ Люблю свободный полёт... :) |
|
|
RenderG 2290 EGP
Рейтинг канала: 13(2004) Репутация: 243 Сообщения: 20534 Откуда: [OEG] Зарегистрирован: 18.09.2006 |
|
AnrDaemon : |
Посмотри видео анбоксинга такой панели,
|
Где?
_________________ No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy |
|
|
AnrDaemon 857 EGP
Рейтинг канала: 17(3131) Репутация: 37 Сообщения: 12292
Зарегистрирован: 17.10.2004 |
|
Ну, не такой - похожей.
На ютубе конечно.
_________________ Люблю свободный полёт... :) |
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
Сделал схему принципиальную электрическую на панель, начинаю стендировать (матрицу 2х2 правда, так как на все проводов безпаечных не хватит) и шнягу всякую дозаказываю с ебая.
Схема:
http://nailalex.dyndns.org/hobby/photos/EDPanel/EDPanelController_sheme.pdf
матрица (4х5)-1 плюс 2 кнопки на регулировку яркости подсветки и выключатель(клавишный) на включение всей панели. При включении в USB будет гореть только маленький светик, а при включении выключателем - стартовая анимация. Выключатель будет тупо рубить питание USB - оно через проходную плату фильтра будет. Короткий кабель microUSB будет с проходной платки втыкаться в ардуину.
Тот микрождойстик что я планировал изначально(наподобие как на приставках на пультах) оказался слишком мелкий для контроллера, потому заказал вот такой агрегат
ссылка
Мне так привычней рулить камерой и посадкой, ибо моделист )))
правда 3 кнопки и миниджойстик придется поменять местами - кнопки ближе к пилоту будут.
Управление подсветкой LED на основной матрице(4х4) будет через шилд https://learn.adafruit.com/adafruit-16-channel-pwm-slash-servo-shield/overview
А для подключения всех коммуникаций к ардуиновой этажерке сделаю свой проходной шилд который будет втыкаться сверху на PWM и выводить с него все 16 каналов.
Для работы с матрицей кнопок взял готовую библиотеку с классом и допилю ее для анимации.
Для самого эмулятора HID Joystick использую готовый проект
http://www.instructables.com/id/Arduino-LeonardoMicro-as-Game-ControllerJoystick/
Ща поеду в гараж за пенопластом и начну потихоньку делать болван, придумывать струбцину для крепежа на столе и ждать ништяки пока приедут. Еще монтажный провод пришлось заказать правильный - тут у нас по космическим ценам все
Последний раз редактировалось: NailMan (10:50 03-06-2017), всего редактировалось 2 раз(а) |
|
|
RenderG 2290 EGP
Рейтинг канала: 13(2004) Репутация: 243 Сообщения: 20534 Откуда: [OEG] Зарегистрирован: 18.09.2006 |
|
В этой библиотеке джойстика советую выключить аутосэнд. Он у меня почемут ардуину завешивал.
_________________ No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy |
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
RenderG : |
В этой библиотеке джойстика советую выключить аутосэнд. Он у меня почемут ардуину завешивал.
|
ОК, буду иметь в виду эту фичу. Пожалуй добавлю сзади на корпусе кнопочку RESET
|
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
Сделал на макетке джой с 2х2 батонами и аналог джоем кошерным.
Автосенд выключил, запилил 3 класса - считыватель, класс кнопки и класс кучи кнопок. Припилил 2 вида анимации(пока) - стартовая и при нажатии. Анимация псевдопотоками с таймерами у каждой кнопки.
Минимальный уровень подсветки будет регулироваться. Анимация работает от этого уровня до максимального.
Видос с демонстрацией стенда с аналог джоем:
http://www.youtube.com/watch?v=OqV4WOZTjvk
Видос с анимацией:
http://www.youtube.com/watch?v=Efi496UmDNk
Продолжаю работу над девайсом!
|
|
|
RenderG 2290 EGP
Рейтинг канала: 13(2004) Репутация: 243 Сообщения: 20534 Откуда: [OEG] Зарегистрирован: 18.09.2006 |
|
Круть!
процедуры debounce для кнопок и calibration для джойстика не забудь. На калибровку я бы вообще посоветовал тумблер рядом с кнопочкой резет вывести, хотя она и нужна только при первом старте.
https://www.arduino.cc/en/Tutorial/Debounce
https://www.arduino.cc/en/Tutorial/Calibration
_________________ No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy |
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
Дебонс для лохов! тем более с ним ничего не работает в матрице(отдельно для кнопок работает) - просто идет криво опрос и любые кнопки в строке срабатывают как первая кнопка в этой строке. Не люблю софтовых RAID-ов и фильтров помех!
Сейчас кнопки с малым дребезгом стоят(реально он почти отсутствует), но для защиты от него(контактам свойственно окисляться) я буду применять аппаратную фильтрацию инвертирующим триггером Шмидта SN74HC14N на все кнопки и строки матрицы.
Калибровку потом допилю. да и зачем калибровку, если можно будет включить компорт в IDE ардуины и посмотреть координаты и механически отрихтовать аналоговый джой.
|
|
|
AnrDaemon 857 EGP
Рейтинг канала: 17(3131) Репутация: 37 Сообщения: 12292
Зарегистрирован: 17.10.2004 |
|
NailMan : |
зачем калибровку
|
Чтобы не…
NailMan : |
включить компорт в IDE ардуины и посмотреть координаты и механически отрихтовать аналоговый джой.
|
_________________ Люблю свободный полёт... :) |
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
Да сделаю, сделаю я калибровку, только когда полную панель соберу 4х5 (для калибровки надо будет основная 4х4), так как спикера не будет(портов не хватат), а будет кнопочная визуализация требуемого положения и действия пользователя в процессе калибровки.
А вообще сделал я сейчас отдельную кнопочку, которая будет по центру между рядами - при включении в порт ЮСБ контроллер включается и сразу выдает в джой данные, но подсветка выключена, но очень плавно ненавязчиво пульсирует кнопка включения/выключения подсветки. Жмакнул - и тут каждой кнопке рандомно будет запускаться одна из пяти вариаций стартовой анимации(базовый накал как на видео, тусклый накал, имитация хреновых контактов и еще парочка вариантов заковыристых).
Причем можно будет потом в скетче задать как будет распространяться волна включений(блоками, с какой-либо стороны или рандомно), так как я добавлю рандомные короткие задержки на включения каждой кнопке.
В общем будет весело!
На след неделе отдам панель основной матрицы в запилку на ЧПУ. Коническим сверлом что то ломает сверлить 8мм светораспределитель от LCD-моника древнего.
|
|
|
Sardak 351 EGP
Рейтинг канала: 45(10193) Репутация: 41 Сообщения: 3433 Откуда: РФ, Рост. обл. Зарегистрирован: 23.10.2014 |
|
Я себе калибровку делал не в void setup, а прямо в цикле обработки.
Для тяги (кликните здесь для просмотра)
void loop ()
{
Traw = analogRead (A2); // чтение значения с датчика
if (Traw>Tmax) Tmax=Traw; if (Traw<Tmin) Tmin=Traw;
Tmap = map (Traw, Tmin, Tmax, 511, -512); //масштабируем к крайним значениям
if (Tmap==0) (Tmap=0.001); //исключаем вероятность деления на ноль
qT = abs((sq(Tmap)/511)/Tmap); //вычисляем коэффициент нелинейности для оси T
if (qT>0.91) qT=1;
Tmap = map (Traw, Tmin, Tmax, 511, -512); //опять масштабируем к крайним значениям
outT = map((qT*Tmap), 511, -512, 32767, -32768); //вычисляем данные с коэффициентом нелинейности для оси T с масштабированием до 16 бит
if ((Tmap>-9)&(Tmap<+9)) outT=0;//задаём мёртвую зону возле нуля
Joystick.setThrottle(outT); //отправляем данные тяги в порт
delay (10);
}
|
|
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
Sardak : |
Я себе калибровку делал не в void setup, а прямо в цикле обработки.
Для тяги (кликните здесь для просмотра)
void loop ()
{
Traw = analogRead (A2); // чтение значения с датчика
if (Traw>Tmax) Tmax=Traw; if (Traw<Tmin) Tmin=Traw;
Tmap = map (Traw, Tmin, Tmax, 511, -512); //масштабируем к крайним значениям
if (Tmap==0) (Tmap=0.001); //исключаем вероятность деления на ноль
qT = abs((sq(Tmap)/511)/Tmap); //вычисляем коэффициент нелинейности для оси T
if (qT>0.91) qT=1;
Tmap = map (Traw, Tmin, Tmax, 511, -512); //опять масштабируем к крайним значениям
outT = map((qT*Tmap), 511, -512, 32767, -32768); //вычисляем данные с коэффициентом нелинейности для оси T с масштабированием до 16 бит
if ((Tmap>-9)&(Tmap<+9)) outT=0;//задаём мёртвую зону возле нуля
Joystick.setThrottle(outT); //отправляем данные тяги в порт
delay (10);
}
|
|
Ну у меня несколько иной подход к процессу калибровок и организации циклов, предпочитаю статусы и сквозной проход цикла с итерациями. За формулы спасибо ))
Вот кстати мой работающий на бензиновой модели параплана проект девайса https://github.com/NailAlex/KillSwitchDuino
это PPM управляемый многофункциональный выключатель зажигания. там калибровку я тоже делаю своеобразно сквозным проходом с итерациями, так как чтение сигнала с управляющего пина с аппаратным прерыванием. Просто в Лупе не сделаешь, а "плоско" с Delay делать неинтересно и не всегда полезно.
Последний раз редактировалось: NailMan (00:29 29-06-2017), всего редактировалось 1 раз |
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
Собсно, код панели уже сделал, с анимациями, с управлением подсветкой, но...с аппаратной частью не срослось!
Как выяснилось - триггеры Шмитта с матрицей кнопок на уровне схемотехники несовместимы как ни крути. С одиночной кнопкой - не вопрос, а с матрицей хрен там. Потому переделал все на Peer-to-Peer соединения, а чтобы портов на Леонарде хватило, поставил 2 порт-расширителя на i2c и 4 триггера Шмитта. Частично смоделировал на макетке - все робит. Придется переделать все с матрицы на линейный массив(что более удобней) и допилить карты включения подсветки.
Вот схема итоговая, которую начну разводить по шилдам
http://nailalex.dyndns.org/hobby/photos/EDPanel/EDPanelController_sheme.pdf
Сегодня мне напилили на ЧПУ панели под кнопки и боковую. В итоге будет 22 кнопки, кнопка сброса и аналоговый джойстик. Соберу и травану контроллер и начну корпус стругать и тряпками укладывать.
|
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
O7 коммандеры!
За день развел итоговые платы шилдов для контроллера панели, теперь все готово к производству самого контроллера, корпуса и потом допиливать код уже на реальном девайсе.
Итоговая схема
https://github.com/NailAlex/EDPanelController/blob/master/Docs/EDPanelController_final.pdf
- 24 кнопки с аппаратной фильтрацией дребезга(использовать можно любые совершенно) + кнопка сброса(принцип Сиалекс в действии )
- 20 кнопок доступно для маппинга
- аналоговый джойстик
- 21 кнопка имеют PWM подсветку
- 2 шилда этажами над ардуиной Леонардо и шилдом Adafruit PWM 16-Channel
- надеюсь питания хватит от USB2.0(0.5A), иначе только под USB3.0(0.9A), тогда в этом случае перемычка Н1 разделяет питание на USB порт ардуины и на 5В шину напрямую. Надеюсь это не потребуется.
Разведенные шилды
https://raw.githubusercontent.com/NailAlex/EDPanelController/master/Docs/EDPanelControllerPCB.jpg
Снизу ардуина, на ней Adafruit PWM, на ней Power/LED шилд, на ней закрывающий девайс Key inputs шилд. Все это пучками проводков(монтажный провод) на локальные шины земли у кнопок и на сами кнопки.
По результату(полному изделию) накатаю статью отдельно с картинками и пояснениями.
Пошел ЛУТить и травить в хлорном железе дригглером...
PS: Обновлять буду на гитхабе, так как проблемы с домашним сервером детектед ((
Последний раз редактировалось: NailMan (19:30 09-07-2017), всего редактировалось 6 раз(а) |
|
|
RenderG 2290 EGP
Рейтинг канала: 13(2004) Репутация: 243 Сообщения: 20534 Откуда: [OEG] Зарегистрирован: 18.09.2006 |
|
Я это, тут, конечно, мимокрокодил, но оверэенжиниринг адский детектед. Со сдвиговыми ргистрами было бы в разы меньше гемора. Да и Леонарда при данном конфиге излишне. Хватило бы промикры.
_________________ No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy
Последний раз редактировалось: RenderG (01:07 10-07-2017), всего редактировалось 1 раз |
|
|
NailMan 70 EGP Рейтинг канала: 9(1017) Репутация: 6 Сообщения: 249 Откуда: Москва Зарегистрирован: 24.07.2016 |
|
RenderG : |
Я это, тут, конечно, мимокрокодил, но оверэенжиниринг адский детектед. Со сдвиговыми ргистрами было бы в разы меньше гемора. Да и Леонарда при данном конфиге излишне. Хватило бы промикры.
|
Не, не мой метод, люблю решения из которых можно потом сделать что-то большее или меньшее. Да и схема на каждой кнопке ничуть не проще со сдвигуном и не решает проблем с дребезгом. К тому же мне ближе i2c чем SPI, так как все эти сдвиговые 74HC595 не имеют честный SPI(как и многие другие чипы с таким интерфейсом), а требуют использования софтового SPI что сказывается на общей производительности.
А Леонардо(или Микро) просто необходима, так как у них нативный USB Serial и сделать из него USB HID Joystick с работающим портом для программирования легко(это одна библиотека), а для любых других(окромя Due) либо сопряжено с потерей USB Serial для программирования(надо перешивать внешний atmega8a) или вовсе невозможно(еслисделан на ныне модном аппаратном чипе CH340). Так что Леонардо/Микро или ничего иного. Ну а почему Леонардо - под него есть готовый PWM шилд, который без колхозинга соединяется в бутерброд. С Микро, про Микро придется колхозанить, зачем?
Последний раз редактировалось: NailMan (01:49 10-07-2017), всего редактировалось 3 раз(а) |
|
|
|
|
|
Канал Elite: Dangerous: «Самодельные панели управления для Elite: Dangerous» |
|