Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании > Готовые решения

Готовые решения Здесь собраны все темы, по которым было найдено и выложено решение

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.11.2019, 16:51   #1
Денис
Новичок
 
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Брейн Ринг, одновременные нажатия кнопок

Доброго всем дня!
Есть контроллер SMH-2G с модулем МС.
К дискретным входам подключено шесть кнопок без фиксации, соответственно на DI0-DI5.
Нужно реализовать логику наподобие брейн-ринга, определить какая кнопка нажата первой, и заблокировать нажатии других на время, ну например 5 секунд.
Подскажите с программой обработки кнопок, особенно интересует вопрос, как поступить если к примеру две кнопки нажаты одновременно?
Денис вне форума   Ответить с цитированием
Старый 16.11.2019, 17:22   #2
razerface
Senior Member
 
Аватара для razerface
 
Регистрация: May 2014
Адрес: S-Pb
Сообщения: 278
Благодарил(а): 4 раз(а)
Поблагодарили: 16 раз(а) в 15 сообщениях
По умолчанию Ответ: Брейн Ринг

Вот так. Пробовал две нажать одновременно - это не реально.
Вложения
Тип файла: psl БРЕЙН РИНГ.psl (137.9 Кбайт, 48 просмотров)
razerface вне форума   Ответить с цитированием
Благодарность от:
Старый 16.11.2019, 17:52   #3
Денис
Новичок
 
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Брейн Ринг

Спасибо, в понедельник прошью попробую. А то я в своей проге что-то перемудрил, моя ловит одновременное нажатие)
Денис вне форума   Ответить с цитированием
Старый 18.11.2019, 09:08   #4
Денис
Новичок
 
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Брейн Ринг

Цитата:
Сообщение от razerface Посмотреть сообщение
Вот так. Пробовал две нажать одновременно - это не реально.
К сожалению, реально нажать две одновременно(
Так что нужно думать дальше.
Денис вне форума   Ответить с цитированием
Старый 18.11.2019, 10:08   #5
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Брейн Ринг

Цитата
Сообщение от Денис Посмотреть сообщение
особенно интересует вопрос, как поступить если к примеру две кнопки нажаты одновременно?
Тут возможны только три выхода:
1) Подлый: ввод от кнопок делать через приоритетный шифратор. Соответственно, чья кнопка имеет меньший номер - будет иметь фору.
2) Жестокий: при одновременном нажатии - снимать вопрос "по техническим причинам".
3) Подыгрывающий: при одновременном нажатии - передавать право ответа тому, у кого меньше (или, наоборот, больше) очков.

Или перейти на счетные входы с высоким быстродействием и внешний генератор импульсов. Генератор запускать с контроллера при начале отсчета времени, а кнопкой РАЗМЫКАТЬ подачу импульсов на счетный вход (даже если по кнопке быстро хлопнут - при тике 50...100 мс вполне можно успеть прочитать два неизменяющихся значения, чем и подтвердить факт нажатия).
Более красивое решение - Ардуино специально для обработки нажатия кнопок (впрочем, на нем же можно поднять и весь интерфейс игры). Но это уже выходит за рамки обсуждения.
ailcat вне форума   Ответить с цитированием
Старый 18.11.2019, 11:38   #6
Денис
Новичок
 
Регистрация: Nov 2019
Сообщения: 4
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Брейн Ринг

Сделал через приоритетный шифратор, на вход приоритета шифратора подал с генератора случайных чисел 0 и 1.
Пару минут пощелкал, вроде распределяется 50/50 при одновременном нажатии. Оставлю так.
Денис вне форума   Ответить с цитированием
Старый 18.11.2019, 11:49   #7
RomanIst
Senior Member
 
Регистрация: Dec 2018
Адрес: Tomsk
Сообщения: 431
Благодарил(а): 10 раз(а)
Поблагодарили: 4 раз(а) в 4 сообщениях
По умолчанию Ответ: Брейн Ринг

Цитата
Сообщение от Денис Посмотреть сообщение
Сделал через приоритетный шифратор, на вход приоритета шифратора подал с генератора случайных чисел 0 и 1.
Пару минут пощелкал, вроде распределяется 50/50 при одновременном нажатии. Оставлю так.
Еще вот это попробуйте должно на 100% блокировать несколько одновременных нажатий.
Вложения
Тип файла: msl БРЕЙН РИНГ.msl (17.5 Кбайт, 48 просмотров)
RomanIst вне форума   Ответить с цитированием
Старый 18.11.2019, 14:08   #8
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Брейн Ринг

Цитата
Сообщение от Денис Посмотреть сообщение
на вход приоритета шифратора подал с генератора случайных чисел 0 и 1.
Генератор только зря жрет ресурсы на не самом быстром контроллере. Просто поставьте на поляну один элемент NOT, замкнутый сам на себя, и подавайте его выход на вход mode шифратора. Приоритет будет меняться каждый тик системы, так что статистическое распределение окажется схожим, зато элемент NOT практически не жрет ресурсов (глядишь, миллисикунду реалтика сэкономите).
ailcat вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
клавиатура не реагирует на нажатия кнопок LordN Вопросы о SMH-2G(i) 7 01.11.2016 17:21


Часовой пояс GMT +4, время: 16:07.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023