|
Готовые решения Здесь собраны все темы, по которым было найдено и выложено решение |
|
Опции темы | Поиск в этой теме |
16.11.2019, 16:51 | #1 |
Новичок
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Брейн Ринг, одновременные нажатия кнопок
Доброго всем дня!
Есть контроллер SMH-2G с модулем МС. К дискретным входам подключено шесть кнопок без фиксации, соответственно на DI0-DI5. Нужно реализовать логику наподобие брейн-ринга, определить какая кнопка нажата первой, и заблокировать нажатии других на время, ну например 5 секунд. Подскажите с программой обработки кнопок, особенно интересует вопрос, как поступить если к примеру две кнопки нажаты одновременно? |
16.11.2019, 17:52 | #3 |
Новичок
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Брейн Ринг
Спасибо, в понедельник прошью попробую. А то я в своей проге что-то перемудрил, моя ловит одновременное нажатие)
|
18.11.2019, 09:08 | #4 |
Новичок
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Брейн Ринг
|
18.11.2019, 10:08 | #5 | |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Брейн Ринг
Цитата:
1) Подлый: ввод от кнопок делать через приоритетный шифратор. Соответственно, чья кнопка имеет меньший номер - будет иметь фору. 2) Жестокий: при одновременном нажатии - снимать вопрос "по техническим причинам". 3) Подыгрывающий: при одновременном нажатии - передавать право ответа тому, у кого меньше (или, наоборот, больше) очков. Или перейти на счетные входы с высоким быстродействием и внешний генератор импульсов. Генератор запускать с контроллера при начале отсчета времени, а кнопкой РАЗМЫКАТЬ подачу импульсов на счетный вход (даже если по кнопке быстро хлопнут - при тике 50...100 мс вполне можно успеть прочитать два неизменяющихся значения, чем и подтвердить факт нажатия). Более красивое решение - Ардуино специально для обработки нажатия кнопок (впрочем, на нем же можно поднять и весь интерфейс игры). Но это уже выходит за рамки обсуждения. |
|
18.11.2019, 11:38 | #6 |
Новичок
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Брейн Ринг
Сделал через приоритетный шифратор, на вход приоритета шифратора подал с генератора случайных чисел 0 и 1.
Пару минут пощелкал, вроде распределяется 50/50 при одновременном нажатии. Оставлю так. |
18.11.2019, 11:49 | #7 |
Senior Member
Регистрация: Dec 2018
Адрес: Tomsk
Сообщения: 431
Благодарил(а): 10 раз(а)
Поблагодарили:
4 раз(а) в 4 сообщениях
|
Ответ: Брейн Ринг
Еще вот это попробуйте должно на 100% блокировать несколько одновременных нажатий.
|
18.11.2019, 14:08 | #8 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Брейн Ринг
Генератор только зря жрет ресурсы на не самом быстром контроллере. Просто поставьте на поляну один элемент NOT, замкнутый сам на себя, и подавайте его выход на вход mode шифратора. Приоритет будет меняться каждый тик системы, так что статистическое распределение окажется схожим, зато элемент NOT практически не жрет ресурсов (глядишь, миллисикунду реалтика сэкономите).
|