Elite Games - Свобода среди звезд!
.
  » Самодельные панели управления для Elite: Dangerous | страница 5
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 5 из 7
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7  След. | Все страницы
Поиск в этой теме:
Канал Elite: Dangerous: «Самодельные панели управления для Elite: Dangerous»
NailMan
 69 EGP

Рейтинг канала: 9(1003)
Репутация: 6
Сообщения: 245
Откуда: Москва
Зарегистрирован: 24.07.2016
_RAZAAR_ :

Насколько это будет критично другой вопрос.
Применение аппаратного антидребезга (как захотел NailMan) избавит процессор от лишних наносекуд затрачиваемого времени которые можно поратить на чтото что хуже решается аппаратно.


Я так и делаю, правда аппаратных прерываний на Лео не хватило - 3 оставалось не считая тех что на i2с уходят, а порт-расширителей 4. Потому обработчиком PCINT ловлю с расширителей прерывания, а 4 системные кнопки(вкл. подсветки, LightUp/Dn и запуск калибровки) завел на обычные пины и с 4мс задержкой чекаю.


Цитата:

Что за анимированная подсветка? И почему её нельзя сделать также аппаратно как и антидребезг?
Если это джойстик то в его контроллере наверо целесообразно избавляться о любых лишних задач кроме получения и передачи данных о положении осей, если применяется mcu с недостаточной производительностью.
А кнопки и другая маловажная лабуда может работать на другом такомже слабопроизводительном mcu на втором порту, в котором с успехом применить удобный програмный антидребезг и супер анимированную подсветку. Улыбка

Вот на старой 24-кнопочной версии как выглядит
http://www.youtube.com/watch?v=UKFPGCUBa8I

Ресурсов Леонарды хватает на всю анимацию и все кнопки без видимой задержки. Цикл опроса системных кнопок и обновлений анимации каждые 4мс, а опрос кнопок по прерыванию(только тех порт-расширителей, которые его сгенерировали).
    Добавлено: 01:27 23-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
NailMan :

Вот на старой 24-кнопочной версии как выглядит
http://www.youtube.com/watch?v=UKFPGCUBa8I


Прикольно!
а что там за хозяиство такое на 24 кнопки организованно?
кучка дешифраторов?
24, или столько сколько нужно, номиналов резисторов, и 3 жилки GND, VCC, ADCIN, от всех кнопок никак не получается , или 65 - 260µs Conversion Time это очень медленные кнопки получатся?
Интересно насколько медленнее или менее надёжно чем програмныи антидребезг с дешифрациеи адреса кнопки?
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.

Последний раз редактировалось: _RAZAAR_ (22:14 24-01-2018), всего редактировалось 4 раз(а)
    Добавлено: 19:52 24-01-2018   
NailMan
 69 EGP

Рейтинг канала: 9(1003)
Репутация: 6
Сообщения: 245
Откуда: Москва
Зарегистрирован: 24.07.2016
_RAZAAR_ :
NailMan :

Вот на старой 24-кнопочной версии как выглядит
http://www.youtube.com/watch?v=UKFPGCUBa8I


Прикольно!
а что там за хозяиство такое на 24 кнопки организованно?
кучка дешифраторов?


Схема той панели:
http://nailalex.dyndns.org/hobby/photos/EDpanel/EDPanelController_24btns.pdf

24 кнопки всего, 21 с PWM подсветкой. 20 кнопок уходят в джой, и 4 системные.

Для подсветки использовался DeekRobot PWM 16-port Shield. Это клон Adafruit с немного иной цоколевкой выходных портов. Как показала практика, подбирать резисторы на светики надо очень аккуратно, так как чип PCA9685PW хоть и дает 25ма на порт, но в реальности его легко пожечь.

Цитата:

24, или столько сколько нужно, номиналов резисторов, и 3 жилки GND, VCC, ADCIN, от всех кнопок никак не получается , или 65 - 260µs Conversion Time это очень медленные кнопки получатся?
Интересно насколько медленнее или менее надёжно чем програмныи антидребезг с дешифрациеи адреса кнопки?

Четыре 6-портовых триггера Шмитта, два 8-портовых i2c порт-расширителя, остальные кнопки и светики идут в ардуину. В итоге остался один свободный пин 5(2 и 3 заняты под i2c).

Дело не в том быстрее или медленней, а сколько тратится ресурсов на обработку каждого и надежность отработки смены состояния кнопки. Триггер Шмитта имеет гистерезис чем и обеспечивает толерантность к ярому дребезгу на любой дерьмовой кнопке. Я панель и без триггеров подключал на стенде(беспаечном) - кнопки с молоточками работали замечательно и без дебаунса даже, но стоило взять другую кнопку или с более хреновым исполнением такую же - все нарушалось. С дебаунсом приходилось подбирать величину игнора. Ну нафиг. Аппаратно - быстро(HC14 быстрый триггер) и всегда надежно.


После того как погорел PWM чип я решил избавиться от лишней платы-шилда и реализовал чип на одной из своих плат контроллера(их две), только поставил 2 чипа на 16 портов, 6 триггеров Шмитта и получилось 36 кнопок(32 уходят в джой), 33 с подсветкой. Освободились порты Леонарды, упростилась разводка. Плюс все светики с N-канальными драйверами, что исключает порево с пробитием портов PWM-чипа. Кстати все готовые платы с этим чипом работают в прямом режиме(с встроенной резисторной нагрузкой), а для моего решения нужно было использовать в режиме с драйвером(с открытым истоком), а гребаные писатели в Adafruit используют только прямой режим и никак не поменять его. Пришлось искать более продвинутую библиотеку для работы с этим PWM.

Сперва все макароны припаивал на платы контроллера, но поднадоело это и сейчас переделываю на разъемное подключение жгутов к платам - пробовал штырьковые разъемы, и разочаровался в этом. Ща делаю на PCI-разъемах. платку переходник с обычным PCI-слотом, к которому приведены пятачки для припайки проводов с плат контроллера. Слот с помощью смолы разделяется на зоны. Каждая зона под свой жгут проводов сгруппированных на панелях. Оканчивается разъем со стороны панели как бы кусочком PCI-платы. Каждая пара контактов на PCI-слоте(справа и слева) - дублируют сигнал. В итоге при сборке в корпус, повтыкал в слот плоские разъемы с жгутиками макарон и телемаркет! Скоро начну делать домашний фитоконтроллер(он же Plant Controller) для автоматического полива, опрыскивания, контроля ряда параметров земли и воздуха в горшках с лимонами и подсветкой фитолампами и для подключения всего этого хозяйства(особенно кучи датчиков) только слотами ISA(точнее короткими версиями слотов аналогичных по конструкции ISA-slot) - надежные и технологичные соединители.

Я так давно свои платы делаю с краевым слотовым разъемом SPI - так дешевле получается. Разъем штырьковые для программирования места много занимает, а слотовый сам себе получается вместе с платой, да и подводить удобней с любой стороны, так как контактные пары дублируют друг-друга. Для программатора сделан маленький адаптер с короткой частью PCI-разъема на 10-пиновый шлейф.

Последний раз редактировалось: NailMan (23:04 24-01-2018), всего редактировалось 1 раз
    Добавлено: 22:58 24-01-2018   
Shirson
 1575 EGP


Модератор
Рейтинг канала: 5(141)
Репутация: 217
Сообщения: 16364
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
NailMan :
Дело не в том быстрее или медленней, а сколько тратится ресурсов на обработку каждого и надежность отработки смены состояния кнопки.
Ресурсов тратится нисколько - операция сравнения это чуть менее чем нисколько ресурсов.
А надёжность в любом раскладе выше хардварной, потому что не зависит от этого самого хардвара.

Цитата:
Триггер Шмитта имеет гистерезис чем и обеспечивает толерантность к ярому дребезгу на любой дерьмовой кнопке. С дебаунсом приходилось подбирать величину игнора. Ну нафиг. Аппаратно - быстро(HC14 быстрый триггер) и всегда надежно.
Програмный подавитель дребезга тоже имеет,в некотором роде гистерезис, что очевидно Улыбка
Вот что непонятно, если тебе было в лом подбирать величину игнора в программном решении, как тебя не замордовало делать это в аппаратном? Улыбка В програмном просто задал значение и всё.
А про скорость триггера вообще не совсем понятно - дебансер работает на том, что некоторое время игнорирует нажатия после первого. Причём тут "быстрость" триггера - не совсем понятно. Програмный работает тоже "быстро" - при нажатии запоминает показания системного таймера и потом игнорирует нажатия некоторое время. Не всмысле сидит и ждйт по delay Хы... Как и аппаратный. Но реализован проще в разы и работает независимо от схемотехнического решения.

Тут, понятно дело, решение за тобой, просто хотелось понять, почему ты именно за аппартаный дебансер так держишься. Может фишка какая-то есть или подводные камни. Но пока, похоже, что ты "просто не умеешь его готовить" (я про программный). Подобное програмное решение (его Рендерг ещё на 4й странице описал), кстати, используется не только для дебанса физических кнопок - похожие схемы используются и для работы с клавиатурой на несколько более низком уровне (например во всяких игровых движках), когда состояние клавиатуры выгребается у системы не как нажатия отдельных буковок, а как массив состояния, типа ответа GetKeyboardState, где возврашается снапшот состояния виртуальных клавиш.
Т.е. решение рально работающее и широко распространённое. Это не просто наши выдумки или блажь Улыбка
_________________
У меня бисера не доxеpа.
    Добавлено: 01:28 25-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
NailMan :


Дело не в том быстрее или медленней, а сколько тратится ресурсов на обработку каждого и надежность отработки смены состояния кнопки. Триггер Шмитта имеет гистерезис чем и обеспечивает толерантность к ярому дребезгу на любой дерьмовой кнопке.


Я к тому что сколько угодно кнопок можно подключить всего через один единственныи свободныи канал АЦП условно по такои схеме
Есть ли какието противопоказания для такого?
С успехом используется такои метод например на кнопках управления круизконтролем на рулях авто.
После чтения АЦП, в цикле определении какая кнопка или пара или троика кнопок зажаты при сравниванении с предварительно получеными эталонными значениями я вводил допуск +/- 0x10h для гарантированно точного распознавания, период чтения АЦП по одному единственному прерыванию от системного таимера был гдето 400микросекунд.
Работало с разными кнопками как с дребезжащими так и несильно дребезжащими одинаково успешно.
Разнос сопротивлении резисторов чем больше тем лучше, но чем больше кнопок тем он меньше естественно.
Отдельную програмку калибровки писал для составления таблици значении с ацп и переносу её в код конечнои проги. Если было место этот код встраивал в конечную прогу чтоб если через 100 лет кнопка окислится можно былоб наместе быстро перекалибровать под её текущее состояние.
При калибровке нажимал каждую кнопку по 10-15 раз с визуальным контролем каждого нажатия и сохранением среднего полученного значения в таблицу.

добавлено спустя 27 минут:
Shirson :
Програмный работает тоже "быстро" - при нажатии запоминает показания системного таймера и потом игнорирует нажатия некоторое время. Не всмысле сидит и ждйт по delay Хы... Как и аппаратный. Но реализован проще в разы и работает независимо от схемотехнического решения.

во время игнорирования если будет делаться чтото чувствительное к двум трём пропущеным тактам до момента пока наступит преывание от таимера и окончательная проверка нажата ненажата, то то, что делалось может прерваться невовремя или завершиться потом с ошибкои, и за это время может придти ещё пара одновременных нажатии кнопок откуда взять столько таимеров? Улыбка
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.

Последний раз редактировалось: _RAZAAR_ (02:03 25-01-2018), всего редактировалось 1 раз
    Добавлено: 02:03 25-01-2018   
AnrDaemon
 768 EGP


Модератор
Рейтинг канала: 17(3009)
Репутация: 30
Сообщения: 11522

Зарегистрирован: 17.10.2004
_RAZAAR_ :
окончательная проверка нажата ненажата

Нет никакой проверки, клавиша нажата сразу.
А после задержки проверяется, не ОТЖАТА ли она.
Или, точнее, после задержки идёт проверка на СМЕНУ состояния.
Если состояние сменилось, кнопка созвращается в задержку, если нет - переходит в нормальное ожидание смены состояния.
_________________
Люблю свободный полёт... :)

Последний раз редактировалось: AnrDaemon (21:30 25-01-2018), всего редактировалось 2 раз(а)
    Добавлено: 21:29 25-01-2018   
RenderG
 2206 EGP


Модератор
Рейтинг канала: 12(1987)
Репутация: 239
Сообщения: 20366
Откуда: [OEG]
Зарегистрирован: 18.09.2006
Не после задержки, а после прохождения какого либо времени. При этом основной цикл программы опроса продолжает работать не останавливаясь. Задержка это всетки пауза цикла.
Еще раз выложу код с третьей страницы. С камментами заодно.
Код:
  //    *******************************************
  //          PUSH BUTTONS r = register number
  //           Starting with 2nd register
  //    *******************************************

  for (int r = 2; r <= num_registers - 1; r++) { // опрос сдвиговых регистров (в данном случае со второго)
    for (int i = 0; i <= 7; i++) {
      if (bitRead(switchVar[r], i) != bitRead(lastState[r], i)) { // проверка состояния восьми ножек каждого регистра
        lastDebounceTime = millis();  // запись времени дебаунса
      }
      if ((millis() - lastDebounceTime) > debounceDelay) { //если пройдена проверка на дебаунс, двигаемся дальше. Если не пройдено - то вообще автоматом идем в начало цикла и это (внезапно) экономит нам время срабатывания итак быстрого цикла
        if (bitRead(switchVar[r], i) != bitRead(switchState[r], i)) { // если состояние кнопки изменилось
          switchState[r] = switchVar[r]; // запись в дебаунсер
          if (bitRead(switchState[r], i) < 1) { //отправка команд в комьютер
            Joystick.pressButton(i + ((r - 1) * 8));
            Joystick.sendState();
          }
          else {
            Joystick.releaseButton(i + ((r - 1) * 8));
            Joystick.sendState();
          }
        }
      }
    }
    lastState[r] = switchVar[r];
  }
как тут заметили, времени оно не жрет вообще. Весь цикл там меньше миллисекунды прокручивается. Системный таймер вообще полезная штука. Через него и анимацию кнопок надо делать, а не отдельным циклом похорошему. Тогда и проблем не будет. Кстати, как мы можем увидеть, код с дебонсером будет работать быстрее, чем без него. Ибо после изменения состояния кнопки даже опрашивать ее не будет на время дебаунса. Профит.
_________________
No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy

Последний раз редактировалось: RenderG (22:42 25-01-2018), всего редактировалось 2 раз(а)
    Добавлено: 22:29 25-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
AnrDaemon :
_RAZAAR_ :
окончательная проверка нажата ненажата

Нет никакой проверки, клавиша нажата сразу.
А после задержки проверяется, не ОТЖАТА ли она.
Или, точнее, после задержки идёт проверка на СМЕНУ состояния.
Если состояние сменилось, кнопка созвращается в задержку, если нет - переходит в нормальное ожидание смены состояния.


ну а я что написал ?
"во время игнорирования" = "Нет никакои проверки"
и
"до момента пока наступит преывание от таимера и окончательная проверка нажата ненажата" = "А после задержки проверяется"

Возможно "проверка нажата ненажата" нельзя понять как "не ОТЖАТА ли она" или как "СМЕНУ состояния", тогда вы неправельно меня поняли или я невнятно выразился.

мне было интересно, что процессор делает во время озвученои задержки - "А после задержки"?

Eсли он ничего не делает, то именно в этом такои програмныи антидребезг хуже аппаратного.
Незачем занимать процессорное время ни единым лишним тактом если есть возможность этого не делать.
Eсли во время отщёта задержки он что-то пытается делать или пытается продолжать то, что он делал до момента когда "клавиша нажата сразу" , то не прервётся ли в ненужныи момент то, что он пытается делать - внезапным окончанием времени задержки и необходимостью "проверка на СМЕНУ состояния"? разумеется это всё имеет смысл если есть ограничения в ресурсах процессорного времени.
А они могут быть если более приоритетные задачи (получение отсылка данных с осеи, опрос основных часто и интенсивно используемых кнопок) требуют близкое к максимально возможному процессорному времени.
Если реальных ограничении во времени процессора нет то апаратныи антидребездг лишние корпуса, как возможно и лишние корпуса регистров или расширителеи вводавывода.
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.
    Добавлено: 23:30 25-01-2018   
RenderG
 2206 EGP


Модератор
Рейтинг канала: 12(1987)
Репутация: 239
Сообщения: 20366
Откуда: [OEG]
Зарегистрирован: 18.09.2006
В это время процессор опрашивает другие кнопки. Гы-гы
Не прервется. Это не так работает. Улыбка
Проверка смены состояния всех кнопок происходит циклично и в порядке общей очереди кнопка за кнопкой. Нельзя опросить сразу все кнопки. Все просто. И это происходит очень быстро. Сам представь 16MHz. Сколько раз можно опросить 24 кнопки за 1мс.
Получение и отсылка данных с осей по хорошему надо также делать. Зачем слать если изменений нет?

добавлено спустя 5 минут:
Система с резюками, используемая в рулях имет место быть но там надо отдельную программку написать просто, чтобы вариативность рассчитывала. Просто на рулях не жмут сразу все кнопки. А у нас - легко. Гы-гы поэтому математика простая, но с нюансами. Но самое классное, что все кнопки можно передавать по двум проводам. Как я уже писал, большинство производителей использует сдвиговые регистры (5 проводов), но зато их можно в цепь объединять сколько хочешь штук и не надо голову ломать над матрицей диодной.
_________________
No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy

Последний раз редактировалось: RenderG (01:04 26-01-2018), всего редактировалось 4 раз(а)
    Добавлено: 01:01 26-01-2018   
AnrDaemon
 768 EGP


Модератор
Рейтинг канала: 17(3009)
Репутация: 30
Сообщения: 11522

Зарегистрирован: 17.10.2004
_RAZAAR_ :
"во время игнорирования" = "Нет никакои проверки"

Читай внимательнее. "Задержка" имелось в виду, задержка обработки событий от конкретной кнопки. Не "обработки событий вообще".
_________________
Люблю свободный полёт... :)
    Добавлено: 04:43 26-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
RenderG :
Сколько раз можно опросить 24 кнопки за 1мс.


Очевидно всё зависит от кнопок их идентичности и смешанности типов Улыбка .
Вот о фактах и популярных алгоритмах

 Cкрытый текст   (кликните здесь для просмотра)
Page 3
So how long do switches bounce for? The short answer: sometimes a lot, sometimes not at all.
Only two switches exhibited bounces exceeding 6200mksec. Switch E, what seemed like a nice red pushbutton, had a worst case bounce when
it opened of 157 msec – almost a 1/6 of a second! Yuk. Yet it never exceeded a 20mksec bounce when closed. Go figure.
Another switch took 11.3 msec to completely
close one time; other actuations were all under 10 msec.
Toss out those two samples and the other 16 switches exhibited an average 1557mksec of bouncing, with, as I said, a max of 6200mksec. Not bad at all.
Seven of the switches consiste ntly bounced much longer when
closed than when opened.
I was amazed to find that for most of the switches many bounces on opening lasted for less than 1 mksec – that’s right, less than a millionth of a second. Yet the very next experiment on the same switch could yield a reading in the hundreds of microseconds.
Identical switches were not particularly identical. Two matching pairs were tested; each twin differed from its brother by a factor of two.

Зная такие подробности по неволе заречёшся писать какоилибо супер быстрыи и еффективныи антидребезг Улыбка
Но тем не менне прочитав пдф полностью следует, если я правельно понимаю применительно к вопросу, что сделать почти правельныи вывод о том что кнопка точно нажата, но не зарегистрированна ЭМ наводка или о том что кнопка точно отпущена, а не дребезжит, для каждои кнопки можно не ранее чем через 20-50мс. и желательно как для момента нажатия так и для момента отпускания проводить проверку перед отправкои состояния в PC, и если есть потребность в том чтоб об этих 20-50мс не заморачивался процессор и нет необходимости экономить деньги на железном антидребизге, то лучше однои железки может быть 2 железки. Шут его знает Улыбка

добавлено спустя 42 минуты:
RenderG :

Получение и отсылка данных с осей по хорошему надо также делать. Зачем слать если изменений нет?

Данных много небывает, с осеи они должны приходить как можно быстреи и чаще, и желательно чтоб игроделы никак их не обраватывали для своего удобства урезая сжимая или искажая какимлибо другим извращенным способом.Улыбка
Кактолько рука на джое, изменения всегда есть, они есть даже если руки на джое нет, вот такие изменения можно игнорировать установив оптопару на ручку.
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.

Последний раз редактировалось: _RAZAAR_ (02:45 27-01-2018), всего редактировалось 2 раз(а)
    Добавлено: 23:08 26-01-2018   
RenderG
 2206 EGP


Модератор
Рейтинг канала: 12(1987)
Репутация: 239
Сообщения: 20366
Откуда: [OEG]
Зарегистрирован: 18.09.2006
Ты не правильно понял. Через 20мс можно понять, что кнопка отпущена или надата снова. Нажимание кнопки срабатывает мгновенно.
Процессор не заморачивается. С дебаунсом код работает быстрее, чем без него.
Ты либо не читаешь, что тебе пишут, либо я не знаю что.
Госсподи. Какую оптопару на ручки. Для чего? Фильтры осей вообще для кого сделаны? Если на кануне выпить литр водки, то дрожания на ручке будут. Если нет - то их не будет.
_________________
No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy

Последний раз редактировалось: RenderG (10:27 28-01-2018), всего редактировалось 1 раз
    Добавлено: 10:25 28-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
RenderG :
Ты не правильно понял. Через 20мс можно понять, что кнопка отпущена или надата снова. Нажимание кнопки срабатывает мгновенно.
Процессор не заморачивается. С дебаунсом код работает быстрее, чем без него.


Ну гдеуж мне, как я могу понять чтот-то если у меня нет ни вашей схемы, ни используемого вами кода целиком.
Это не с дебаунсером код работает быстрее, а с конвеером обработки данных поступающих в последовательном виде с регистров, в котором задержка отправки состояния может и не присутствовать.
Вы наверно незахотели почитать пдф который я линканул.
Даже в вашем понимании когда "Нажимание кнопки срабатывает мгновенно" - невсегда правельно так делать, ваш код (конвеер+ задержка отправки по условию) посылает данные в комп о смене состояния даже пусть только об отпущеной кнопке, только через минимум 20мс, при железном антидребезге, в такой задержке необходимости нет так как всё уже проверено железно, и если кнопка отпущена то поступившие об этом событии данные достоверны и их сразу можно отсылать в комп недожидаясь 20мс.

RenderG :

Ты либо не читаешь, что тебе пишут, либо я не знаю что.

Я читаю, и не спорю о том, что однозначного ответа на вопрос о програмном или аппаратном антидребезге, нет.
При определённых обстоятельствах допустим не применимых или слабо применимых для гражданского игрового контроллера Улыбка, в котором возможно комуто захочется использовать разнородные кнопки с разными не всегда хорошими и одинаковыми физическими характеристиками, можно вообше никакой антидребезг не применять по причине применения умных кнопок.

RenderG :

Госсподи. Какую оптопару на ручки. Для чего?

Вам никогда не доводилось видеть такое на реальных машинах?
Применений может найтись масса даже для игр, одно из, корабль летит, до места назначения час, пилот встал с кресла задел ручку ногой, корабль сменил курс, но если ручка блокируется простым убором руки, такого не случится.


RenderG :
Фильтры осей вообще для кого сделаны?
Если на кануне выпить литр водки, то дрожания на ручке будут. Если нет - то их не будет.

Фильтры осей на уровне умного датчика положения, сделаны для того чтоб контроллер устройства имел возможность мгновенно и незамедлительно передавать данные в пц, такие датчики очень чувствительны не только к дрожащей руке выпившего на кануне литр водки, но и к обычным колебаниям кресла или стола на котором установлен контроллер и которое периодически покачивается если в нём сидит пилот, или к колебаниям ручки при нажатии кнопок, и уж в естественных колебаниях ручек реальных движущихся машин
и постоянном присутствии осевых данных наверно никто сомниваться небудет.
Задача осевых контроллеров неустанно и максимально быстро передавать
по минимому обработанные точные данные положения, фильтровать и окончательно обрабатывать которые при необходимости должен пц или тот кому они там передаются.
Либо иметь достаточно мощное железо на собственном борту и возможность встроенной регулировки и корректировки параметров кривых отклика, последовательностей нажатия кнопок, записей всевозожных макросов, итд.
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.

Последний раз редактировалось: _RAZAAR_ (15:59 28-01-2018), всего редактировалось 1 раз
    Добавлено: 13:59 28-01-2018   
RenderG
 2206 EGP


Модератор
Рейтинг канала: 12(1987)
Репутация: 239
Сообщения: 20366
Откуда: [OEG]
Зарегистрирован: 18.09.2006
Отпускание кнопки - это когда функция уже выполнена. Если ты в состоянии нажать и отпустить кнопку за 5мс и
То влияет то даааа. Откуда 20мс взялось не ясно.
У меня весь цикл 40 кнопок и жк экран 4 оси и 16 РГБ светодиодов со всеми подсветками и прочим проходит за 12мс. (Спецом добавил вывод на экран) Задержка в 20мс будет только при условии, что нажата кнопка #40, а цикл в самом старте и опрашивает кнопку 1. Если применить теорию разброса, то окло 75% всех срабатываний будут в центре. И средний отклик будет меньше 2мс. Это 0,0025 секунды, что совершенно точно можно назвать мгновенно. Дебаунс на это время Влияет положительно. После нажатия кнопки на время дебаунса конкретная кнопка не опрашивается что внезапно ускоряет цикл (4функции пропускаются) Полный код и схема лежат в соседней теме и тут на третьей странице. Если зажать все 40 кнопок одновременно, цикл проходит за 5мс.
Код дебаунса чуть выше. Из него видно что все что он делает - это после срабатывания кнопки перестает опрашивать ее состояние на время дебаунса. Изменение кнопки в компьютер отправляется мгновенно следующей строчкой после ее чтения. Это все есть в примере кода. Железный антидребез работает точно также, и у него такая же задержка на отпускание будет. Только софтовым методом я могу ее регулировать для разных кнопок, тумблеров и энкодеров, а аппаратный таймер там вшит гвоздями.

добавлено спустя 10 минут:
Какойто дурацкий спор практика с теоретиком. Ой, не могу!..

добавлено спустя 5 минут:
Про оси. Железная передача в машине не имеет шумов, в отличае от любых аналоговых датчиков, резюков или холлов. Для этого применяется сглаживание. С гидроусилителем руля происходит примерно тоже самое. Гы-гы все современные системы fly by wire и нормальные топовые джойстики также обладают фильтром сглаживания. Это не значит что срабатывание медленнее. Просто паразитные шумы с датчиков сглаживаются и все.
_________________
No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy

Последний раз редактировалось: RenderG (17:27 28-01-2018), всего редактировалось 7 раз(а)
    Добавлено: 17:27 28-01-2018   
Январь
 63 EGP

Рейтинг канала: 7(558)
Репутация: 4
Сообщения: 140

Зарегистрирован: 05.06.2016
Добрый день!
Уважаемые, что можно собрать из старого джойстика?
Сейчас использую два новых, а старый, cobra R4, лежит без дела.
И выкидывать жалко, там только твист не работает, и место занимает

Последний раз редактировалось: Январь (17:54 28-01-2018), всего редактировалось 1 раз
    Добавлено: 17:54 28-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
 Cкрытый текст   (кликните здесь для просмотра)
_RAZAAR_ :
RenderG :
Откуда 20мс взялось не ясно.

повторно предлагаю почитать выводы ещё одного практика.
RenderG :

 Cкрытый текст   (кликните здесь для просмотра)
У меня весь цикл 40 кнопок и жк экран 4 оси и 16 РГБ светодиодов со всеми подсветками и прочим проходит за 12мс. (Спецом добавил вывод на экран) Задержка в 20мс будет только при условии, что нажата кнопка #40, а цикл в самом старте и опрашивает кнопку 1. Если применить теорию разброса, то окло 75% всех срабатываний будут в центре. И средний отклик будет меньше 2мс. Это 0,0025 секунды, что совершенно точно можно назвать мгновенно. Дебаунс на это время Влияет положительно. После нажатия кнопки на время дебаунса конкретная кнопка не опрашивается что внезапно ускоряет цикл (4функции пропускаются) Полный код и схема лежат в соседней теме и тут на третьей странице. Если зажать все 40 кнопок одновременно, цикл проходит за 5мс.
Код дебаунса чуть выше. Из него видно что все что он делает - это после срабатывания кнопки перестает опрашивать ее состояние на время дебаунса. Изменение кнопки в компьютер отправляется мгновенно следующей строчкой после ее чтения. Это все есть в примере кода. Железный антидребез работает точно также, и у него такая же задержка на отпускание будет. Только софтовым методом я могу ее регулировать для разных кнопок, тумблеров и энкодеров, а аппаратный таймер там вшит гвоздями.


Если вы уже прочитали, то смогли убедиться что всё вами сказанное в скрытом тексте, условно справедливо, если все кнопки идентичны по своим физическим характеристикам, и удовлетворяют все 40 одновременно, рамкам поставленным вашим кодом.
В случае если ктото вздумает применить разные по своим свойствам кнопки, код необходимо будет корректировать, возможно даже динамически.
RenderG :

Какойто дурацкий спор практика с теоретиком. Ой, не могу!..

То что на практике у вас чтото работает, вовсе не означает что вы пытаетесь вести спор с теоретиком.
Я далеко не теоретик, и темболее не оспариваю, что на практике у вас чтото работает так как работает.
Если вам непонятно почему человек сделал то, что также работает, другим не менее практичным способом, то возможно мои коментарии помогли вам это понять.

RenderG :

Про оси. Железная передача в машине не имеет шумов, в отличае от любых аналоговых датчиков, резюков или холлов. Для этого применяется сглаживание. С гидроусилителем руля происходит примерно тоже самое. Гы-гы все современные системы fly by wire и нормальные топовые джойстики также обладают фильтром сглаживания. Это не значит что срабатывание медленнее.

Я как раз об этом, только не джойстики, а их умные осевые датчики, шумы от которых нет необходимости фильтровать основным контроллером устройства, и о том что данные присутствуют не от шумов, а от реальных осевых движений.

RenderG :

Просто паразитные шумы с датчиков сглаживаются и все.

по хорошему сглаживаются не в основном контроллере занимающимся коммуникацией, а средствами самих датчиков, програмными и аппаратными.
Но если есть воможность применить более совершеннй контроллер, то и с одновременным считыванием почти всех кнопок он справится и с фильтрацией шумов как с кнопок так и с осевых датчиков, и наверно с 10ю видами анимированной подсветки и ещё кучкой жк экранчиков тоже справится без какихлибо задержек.

RenderG :

Полный код и схема лежат в соседней теме и тут на третьей странице

Как я понимаю тут надо искать?
Исходник этот?
а вот внятной схемы чегото не нашел там.
можно линк?
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.

Последний раз редактировалось: _RAZAAR_ (12:54 29-01-2018), всего редактировалось 1 раз
    Добавлено: 18:15 28-01-2018   
RenderG
 2206 EGP


Модератор
Рейтинг канала: 12(1987)
Репутация: 239
Сообщения: 20366
Откуда: [OEG]
Зарегистрирован: 18.09.2006
Январь :
Добрый день!
Уважаемые, что можно собрать из старого джойстика?
Сейчас использую два новых, а старый, cobra R4, лежит без дела.
И выкидывать жалко, там только твист не работает, и место занимает
впринципе что хочешь. Улыбка выпаиваешь кнопки и контроллер. Перепаиваешь на свои кнопки. А так, я видел гдет ваще джой положили, примотали изолентой к ручке вешалку и получились педали. Ой, не могу!..
_________________
No More Mr. Nice Guy!
Смирись, Пилот!
Ты будешь жалок
Всего-лишь после
Пары палок... (с) Dandy

Последний раз редактировалось: RenderG (03:49 30-01-2018), всего редактировалось 1 раз
    Добавлено: 03:42 30-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
Январь :
Добрый день!
Уважаемые, что можно собрать из старого джойстика?
Сейчас использую два новых, а старый, cobra R4, лежит без дела.
И выкидывать жалко, там только твист не работает, и место занимает


Тоже что и со старыми 101 клавишными клавиатурами, разбираеш выкидываеш всё ненужное, набираеш удобных кнопочек сколько надо, суёш в удобный коробок, снабжаеш подсветкой если надо, получаеш кастом панель, а если сунуть туда кишки от старого джоя получиш и оси Подмигиваю

добавлено спустя 35 минут:
RenderG :
Полный код и схема лежат в соседней теме и тут на третьей странице


RenderG :


Github пока только осваиваю. Более подробные инструкции прикручу как осилю. gigi.gif
Схему тоже постараюсь прикрутить.
 Cкрытый текст   (кликните здесь для просмотра)
Впринципе, шилд поддерживает mmjoy2 с аналоговыми датчиками, но это не лучший вариант.

А, еще шилд полностью совместим с mmjoy2. Это проще настраивать без правки кода, но сильно урезает функционал.

В планах добавить:
i2c OLED экранчики.
цифровые датчики R.A.M.S. если тов. Komaroff не будет против.


Пользуйтесь. Подмигиваю

Товарищч это не вы писали? Улыбка Чем пользоваться?
О какой схеме вы мне говорили что есть?
Если не прикрутили пока так и скажите, заранее благодарю!
Необижайтесь! дебаунс и платки китаёзами сделанные у вас тоже очень практические и не менее шедевриальные Улыбка
Мечтаю повторить, по коду неохото схему востанавливать Улыбка
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.

Последний раз редактировалось: _RAZAAR_ (05:54 30-01-2018), всего редактировалось 1 раз
    Добавлено: 05:54 30-01-2018   
Январь
 63 EGP

Рейтинг канала: 7(558)
Репутация: 4
Сообщения: 140

Зарегистрирован: 05.06.2016
RenderG :
А так, я видел гдет ваще джой положили, примотали изолентой к ручке вешалку и получились педали.

Какая интересная идея ))

_RAZAAR_ :


Меня собственно и интересует, в какие формы это можно воплотить, в старый джой у меня было впаяно несколько кнопок на свой "вкус", а теперь два джойстика на управление, а вот что с этим сделать, нужное?
    Добавлено: 13:33 30-01-2018   
_RAZAAR_
 4 EGP


Рейтинг канала: 27(5725)
Репутация: 13
Сообщения: 2623
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
Январь :

_RAZAAR_ :


Меня собственно и интересует, в какие формы это можно воплотить, в старый джой у меня было впаяно несколько кнопок на свой "вкус", а теперь два джойстика на управление, а вот что с этим сделать, нужное?


Всё зависит от ваших потребностей. Улыбка
Например (Copyright information all rights reserved (C) _R&R_ Controllers) Вам может быть интересно организовать на левом РУС
две оси Х и две оси Y для каких либо экспериментов с одновременным управлением горизонтальными и вертикальными трастерами совместно с управлением тангажом креном или рысканием всего лиш однои рукой по команде с одной из свободных кнопок которая будет выполнять функцию подключения или отключения сигналов с дополнительных осей в добавок к основным.
Вам достаточно аккуратно демонтировать контроллер с датчиками из старого
джойстика и установить их в корпус используемого вами РУС,
предварительно подготовив его к подобной процедуре.
Фунцию отключения подключения дополнительных осей возможно будет организовать например с помощю управляемых внешним контроллером комутаторов цифровых или аналоговых сигналов.

Либо вам захочется прикрутить к вашей Home Automation System, удалённую безпроводную панель управления.
Опять же переносите контроллер старого джойстика в подходящую вам панель с кнопками к которым подключаете перенесённый контроллер, снабжаете его USB-WiFi экстендером, ответный модуль которого подключаете к порту вашей Home Automation System.
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингисхан.

Последний раз редактировалось: _RAZAAR_ (14:45 30-01-2018), всего редактировалось 2 раз(а)
    Добавлено: 14:29 30-01-2018   
Канал Elite: Dangerous: «Самодельные панели управления для Elite: Dangerous»
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: А у нас еще немного на улице осталось... видать народ из морозильников заначки достает. (kamikadze о снеге)

  » Самодельные панели управления для Elite: Dangerous | страница 5
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18