Оглавление:
- Шаг 1. Определение оптимальной конфигурации кнопок
- Шаг 2: Моя 4-кнопочная сборка
- Шаг 3: Игра
- Шаг 4: соревнования лицом к лицу
- Шаг 5. Дополнительные контроллеры для 2 игроков
- Шаг 6. Обновление (я)
Видео: 4-кнопочные игры с использованием одного аналогового входа: 6 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
В этом руководстве основное внимание уделяется использованию одной аналоговой входной линии для нескольких кнопок, которые могут быть обнаружены независимо друг от друга.
И, чтобы подчеркнуть использование этих кнопок, прилагается программное обеспечение для игры в четыре различные игры с 4 кнопками. Во всех играх (всего 8) здесь используется светодиодная лестничная диаграмма (см. Более ранний проект: Instructables: Single-Line-LED-Display-Games).
Вы можете использовать свою собственную сборку с 4 кнопками с другими выходами дисплея, просто используйте функцию scanButtons () из одного из прилагаемых эскизов. И использовать эти скетчи для примера использования.
Это игра на ловкость: Whack-a-Mole, игра на память: Simon Says, логические игры Sea Hunt и Flip'd - игра для двух игроков, похожая на Reveri. Позже, в этом руководстве, я также позже представлю четыре игры между двумя участниками, соревнование один на один.
Шаг 1. Определение оптимальной конфигурации кнопок
Простое использование нескольких резисторов последовательно с нажатыми кнопками между каждым из них будет работать, если вам никогда не придется беспокоиться о том, что нажатие одной кнопки перекрывает другое. В такой конфигурации каждая кнопка при нажатии блокирует все, что находится под ней. Даже когда вам нужно всего две кнопки, а вы заботитесь только об одной за раз, как в реализации пинг-понга; это будет проблемой, если игрок не сможет (слишком медленно или злонамеренно) убрать палец со своей кнопки до того, как другой игрок ударит его.
Несколько кнопок часто подключаются к одной аналоговой линии, каждая из которых имеет свои собственные значения резисторов, идущих на вход. Вы можете достаточно легко различить, какая кнопка или пара нажата, когда есть только 2 или 3 кнопки. Но ненадежно с большим количеством кнопок или более чем двумя нажатыми, так как комбинация показаний в худшем случае оказывается слишком близкой друг к другу.
Здесь с помощью того, что я называю двойной Y-конфигурацией из четырех кнопок и резисторов, вы можете надежно различить любую нажатую одинарную, двойную, даже тройную или все четыре кнопки. Программный драйвер для этого описан в следующем разделе и в листинге кода.
Желая иметь четыре кнопки, подключенные к одному аналоговому входу, где каждое нажатие кнопки могло быть обнаружено независимо от состояния других кнопок, я смоделировал несколько конфигураций в электронной таблице. Я обнаружил, что конфигурация с двойным Y (состоящая из 2 комплектов по три резистора) дает наилучшие возможности. См. Схему подключения ниже. Я оценивал их на основе наибольшего разделения общего сопротивления между любыми двумя комбинациями нажатых кнопок. Далее я смоделировал рассчитанные аналоговые значения. См. Файл электронной таблицы ниже.
Чтобы определить наилучшие значения для использования в приведенных выше конфигурациях, я написал симуляцию, которая исчерпывающе опробовала все возможные перестановки значений потенциального резистора, найдя набор, который давал наименьшую разницу между возможными считывающими входами. Я предоставил код, который использовал. Это был инструмент грубой силы, который я собрал, получил то, что хотел, и отложил его в сторону, так что он никоим образом не был оптимизирован. Это полностью как есть, только для исторической справки (Solve_4R.html ниже).
Вот его результат для обзора:
R1: 10 R2: 12 R3: 10 R4: 12 R5: 10 R6: 15 мин R дельта: 3,3658818125
R1: 10 R2: 12 R3: 10 R4: 12 R5: 10 R6: 18 мин R дельта: 4.9490620031 R1: 10 R2: 12 R3: 10 R4: 12 R5: 18 R6: 10 мин R дельта: 4.9490620031 R1: 10 R2: 12 R3: 10 R4: 15 R5: 10 R6: 33 мин R дельта: 5,0576510475 R1: 10 R2: 12 R3: 10 R4: 15 R5: 12 R6: 10 мин R дельта: 7,104826870 R1: 10 R2: 12 R3: 10 R4: 18 R5: 10 R6: 18 мин R дельта: 8.1673424912 R1: 10 R2: 12 R3: 10 R4: 18 R5: 15 R6: 22 мин R дельта: 8.6504939648 R1: 10 R2: 12 R3: 10 R4: 22 R5: 10 R6: 18 minR дельта: 10,1721492515 R1: 10 R2: 12 R3: 10 R4: 22 R5: 10 R6: 22 minR дельта: 10,5040000560 R1: 10 R2: 12 R3: 10 R4: 27 R5: 12 R6: 27 minR дельта: 10,7814361579 R1: 10 R2: 12 R3: 12 R4: 33 R5: 15 R6: 36 мин Дельта R: 10,8827552754 R1: 10 R2: 12 R3: 12 R4: 68 R5: 10 R6: 22 мин Дельта R: 11,4499029683 R1: 10 R2: 12 R3: 12 R4: 68 R5: 10 R6: 27 мин R дельта: 12.0961591599 R1: 10 R2: 12 R3: 15 R4: 68 R5: 10 R6: 27 мин дельта R: 12.7992171382 R1: 10 R2: 12 R3: 15 R4: 75 R5: 10 R6: 27 мин R дельта: 12,7992171382 R1: 10 R2: 12 R3: 15 R4: 82 R5: 10 R6: 27 мин R дельта: 1 2,7992171382 R1: 10 R2: 12 R3: 15 R4: 91 R5: 10 R6: 27 мин Дельта R: 12,7992171382 R1: 10 R2: 12 R3: 27 R4: 82 R5: 10 R6: 15 мин Дельта R: 12,7992171382 R1: 10 R2: 12 R3: 27 R4: 91 R5: 10 R6: 15 мин R дельта: 12.7992171382 R1: 10 R2: 12 R3: 27 R4: 100 R5: 10 R6: 15 мин R дельта: 12.7992171382 R1: 10 R2: 12 R3: 68 R4: 15 R5: 10 R6: 27 мин R дельта: 12.7992171382 R1: 10 R2: 12 R3: 75 R4: 15 R5: 10 R6: 27 мин R дельта: 12.7992171382 R1: 10 R2: 12 R3: 82 R4: 15 R5: 10 R6: 27 мин Дельта R: 12,7992171382 R1: 10 R2: 12 R3: 82 R4: 27 R5: 10 R6: 15 мин Дельта R: 12,7992171382 R1: 10 R2: 12 R3: 91 R4: 15 R5: 10 R6: 27 мин Дельта R: 12,7992171382 R1: 10 R2: 12 R3: 91 R4: 27 R5: 10 R6: 15 мин R дельта: 12.7992171382 R1: 10 R2: 12 R3: 100 R4: 27 R5: 10 R6: 15 мин R дельта: 12.7992171382 R1: 10 R2: 15 R3: 10 R4: 18 R5: 18 R6: 12 мин R дельта: 13,2909379968 R1: 10 R2: 15 R3: 10 R4: 22 R5: 12 R6: 10 мин дельта R: 14,245362837 R1: 10 R2: 15 R3: 10 R4: 39 R5: 18 R6: 27 мин R дельта: 14.5126340326 R1: 10 R2: 15 R3: 10 R4: 56 R5: 12 R6: 15 мин R дельта: 15,220571553 R1: 10 R2: 15 R3: 12 R4: 27 R5: 12 R6: 12 мин R дельта: 18,8228671943 R1: 10 R2: 15 R3: 12 R4: 39 R5: 18 R6: 27 мин R дельта: 19.236186493 R1: 10 R2: 15 R3: 15 R4: 47 R5: 22 R6: 33 мин. Дельта R: 19,5685736556 R1: 10 R2: 15 R3: 22 R4: 56 R5: 22 R6: 27 мин Дельта R: 19.7887024012 R1: 10 R2: 15 R3: 27 R4: 220 R5: 12 R6: 10 мин R дельта: 21,2533513149 R1: 10 R2: 15 R3: 220 R4: 27 R5: 12 R6: 10 мин R дельта: 21,2533513149 R1: 10 R2: 18 R3: 22 R4: 68 R5: 33 R6: 39 мин R дельта: 21,58566448 R1: 10 R2: 18 R3: 27 R4: 75 R5: 33 R6: 36 мин R дельта: 22,158443806 R1: 10 R2: 18 R3: 27 R4: 82 R5: 33 R6: 36 мин. Дельта R: 22,158443806 R1: 10 R2: 18 R3: 27 R4: 82 R5: 33 R6: 39 мин. Дельта R: 22,158443806 R1: 10 R2: 18 R3: 33 R4: 75 R5: 27 R6: 18 мин. Дельта R: 24,2578084248 R1: 10 R2: 18 R3: 75 R4: 33 R5: 27 R6: 18 мин R дельта: 24,2578084248 R1: 10 R2: 36 R3: 36 R4: 68 R5: 12 R6: 18 мин R дельта: 24,380952380 R1: 10 R2: 36 R3: 36 R4: 75 R5: 12 R6: 18 мин R дельта: 24.380952380 R1: 10 R2: 36 R3: 39 R4: 75 R5: 12 R6: 15 мин R дельта: 24.380952380 R1: 10 R2: 36 R3: 68 R4: 36 R5: 12 R6: 18 мин R дельта: 24.380952380 R1: 10 R2: 36 R3: 75 R4: 36 R5: 12 R6: 18 мин R дельта: 24.380952380 R1: 10 R2: 36 R3: 75 R4: 39 R5: 12 R6: 15 мин R дельта: 24.380952380 R1: 10 R2: 39 R3: 15 R4: 39 R5: 10 R6: 27 мин R дельта: 24.4674161824 R1: 10 R2: 39 R3: 22 R4: 47 R5: 10 R6: 22 мин R дельта: 24.4674161824 R1: 10 R2: 39 R3: 22 R4: 56 R5: 10 R6: 22 мин R дельта: 24.4674161824 R1: 10 R2: 39 R3: 27 R4: 56 R5: 10 R6: 15 мин. Дельта R: 24,4674161824 R1: 10 R2: 39 R3: 39 R4: 15 R5: 10 R6: 27 мин. Дельта R: 24,4674161824 R1: 10 R2: 39 R3: 47 R4: 22 R5: 10 R6: 22 минR дельта: 24,4674161824 R1: 10 R2: 39 R3: 56 R4: 22 R5: 10 R6: 22 минR дельта: 24,4674161824 R1: 10 R2: 39 R3: 56 R4: 27 R5: 10 R6: 15 мин. Дельта R: 24,4674161824 R1: 12 R2: 39 R3: 33 R4: 75 R5: 15 R6: 39 мин Дельта R: 24,5467795136 R1: 12 R2: 39 R3: 33 R4: 82 R5: 18 R6: 47 мин Дельта R: 24,789976640 R1: 12 R2: 39 R3: 47 R4: 100 R5: 18 R6: 33 мин R дельта: 24.789976640 R1: 12 R2: 39 R3: 56 R4: 100 R5: 15 R6: 12 минР дельта R: 25,3564579616 R1: 12 R2: 39 R3: 100 R4: 56 R5: 15 R6: 12 мин дельта R: 25,3564579616 R1: 12 R2: 47 R3: 18 R4: 47 R5: 10 R6: 27 мин R дельта: 27.4996466431 R1: 12 R2: 47 R3: 22 R4: 56 R5: 10 R6: 22 мин R дельта: 27.4996466431 R1: 12 R2: 47 R3: 27 R4: 56 R5: 10 R6: 18 мин R дельта: 27.4996466431 R1: 12 R2: 47 R3: 47 R4: 18 R5: 10 R6: 27 мин R дельта: 27.4996466431 R1: 12 R2: 47 R3: 56 R4: 22 R5: 10 R6: 22 мин R дельта: 27.4996466431 R1: 12 R2: 47 R3: 56 R4: 27 R5: 10 R6: 18 мин Дельта R: 27.4996466431 R1: 15 R2: 56 R3: 22 R4: 56 R5: 10 R6: 27 мин Дельта R: 29.1605253709 R1: 15 R2: 56 R3: 22 R4: 56 R5: 12 R6: 33 мин R дельта: 29.811354701 R1: 15 R2: 56 R3: 33 R4: 68 R5: 12 R6: 22 minR дельта: 29.811354701 R1: 15 R2: 56 R3: 56 R4: 22 R5: 12 R6: 33 минR дельта: 29.811354701 R1: 15 R2: 56 R3: 68 R4: 33 R5: 12 R6: 22 минR дельта: 29.811354701 R1: 18 R2: 68 R3: 27 R4: 68 R5: 12 R6: 33 мин. Дельта R: 30,7487559507 R1: 18 R2: 68 R3: 33 R4: 68 R5: 12 R6: 27 мин дельта R: 30.8965517241 R1: 18 R2: 68 R3: 68 R4: 33 R5: 12 R6: 27 мин Дельта R: 30,8965517241 R1: 18 R2: 75 R3: 27 R4: 68 R5: 12 R6: 36 мин Дельта R: 30.9007058823 R1: 18 R2: 75 R3: 47 R4: 91 R5: 12 R6: 10 мин R дельта: 30.9007058823 R1: 18 R2: 75 R3: 68 R4: 27 R5: 12 R6: 36 мин R дельта: 30.9007058823 R1: 18 R2: 75 R3: 91 R4: 47 R5: 12 R6: 10 мин R дельта: 30.9007058823 R1: 22 R2: 82 R3: 36 R4: 82 R5: 15 R6: 39 мин R дельта: 33.2525545171 R1: 22 R2: 82 R3: 82 R4: 36 R5: 15 R6: 39 мин. Дельта R: 33.2525545171 R1: 36 R2: 82 R3: 22 R4: 82 R5: 39 R6: 15 мин. Дельта R: 33.2525545171 R1: 36 R2: 82 R3: 82 R4: 22 R5: 39 R6: 15 мин. Дельта R: 33.2525545171 R1: 82 R2: 22 R3: 36 R4: 82 R5: 15 R6: 39 мин R дельта: 33.2525545171 R1: 82 R2: 22 R3: 82 R4: 36 R5: 15 R6: 39 мин R дельта: 33.2525545171 R1: 82 R2: 36 R3: 22 R4: 82 R5: 39 R6: 15 мин R дельта: 33.2525545171 R1: 82 R2: 36 R3: 82 R4: 22 R5: 39 R6: 15 мин R дельта: 33.2525545171 R1: 36 R2: 82 R3: 82 R4: 22 R5: 39 R6: 15 мин R дельта: 33.2525545171
Шаг 2: Моя 4-кнопочная сборка
Для своих четырех кнопок я использовал эти кнопки, а также перфорированную печатную плату и резисторы, как показано на схеме выше. То, как вы физически реализуете свои четыре кнопки, широко открыто и зависит от вас и ваших потребностей в проектах. Пока это электрически то, что показано на схеме выше. Убедитесь, что ваша конструкция крепления такова, что вы не будете контактировать с проводкой к кнопкам, так как это приведет к потере показаний, что приведет к неправильному поведению кнопок.
У меня на доске есть небольшая кнопка, которую я использую как функциональную клавишу. Он включен последовательно с резистором 2 МОм, что не сильно снижает мои другие входные показания; хотя я могу обнаружить это, только когда он один нажимается. Вы можете проигнорировать это или проверить код, чтобы понять, как я его использую.
Тестовый эскиз Test_12Leds_6Btns можно использовать для проверки обнаружения нажатий кнопок вашим MCU и фактической сборки кнопок. Его выход настроен на просмотр либо с помощью светодиодной лестницы, либо последовательного монитора. Его можно легко изменить для вывода через любой тип дисплея, который у вас может быть.
Возможно, вам придется настроить набор эталонных показаний кода, с которыми он сравнивает вход, из-за разницы потенциалов во внутреннем подтягивающем резисторе вашего MCU или допусков резисторов, которые вы используете. Вы могли бы, если хотите, использовать прецизионные резисторы, надеясь, что вам не придется делать корректировки калибровки. Кстати, я не использовал внешнее подтягивание, так как это помешало бы другим вариантам использования, которые я планирую для одного из своих проектов.
Одним из ключевых программных действий, предпринимаемых для обеспечения того, чтобы определение того, какая кнопка (кнопки) нажата, не зависит от уровня напряжения питания (и / или отклонения MCU), является масштабирование аналогового входа на основе его максимального значения, которое, в свою очередь, зависит от напряжения питания.
Программным «драйвером», который обслуживает эти кнопки, является подпрограмма scanButtons (). Он ожидает, пока значение аналогового входа установится, затем преобразует показание в серию заранее определенных значений; и переводит это в соответствующие состояния для коллекции кнопок. Эта процедура и общедоступные переменные, которые она разделяет с прикладным программным обеспечением, - это все, что необходимо для аналогичного использования этого набора в независимых кнопках.
Примечание! Текущая версия scanButtons () не пытается однозначно идентифицировать все возможные комбинации трех кнопок, поскольку это было, по моему мнению, нереально необходимым и еще больше усложнило бы требуемый код и точность калибровки.
Шаг 3: Игра
Любой скетч, «LadderGames4» или «Head2head» может быть загружен и запущен практически любым микроконтроллером Arduino, но в LadderGames4 должен быть закомментирован «SimonSays» или любая из двух других игр, чтобы уместиться в 8 Кбайт программного пространства. Аттиний-85. Звук также является проблемой для ATtiny-85, см. Предыдущий проект, упомянутый выше. Код настроен с условной компиляцией и, как известно, работает с Nano, Uno и ATtiny-85.
С каждым из этих эскизов после инициализации вам предоставляется меню, в котором по одному цвету загораются все красные… желтые… зеленые… синие светодиоды, соответствующие четырем возможным вариантам игры. Вы либо нажимаете Btn1, когда горит желаемый вариант, либо в любой момент нажимаете Btn2-4 для игр 2-4. Избыточный способ выбора совместим как с двух-, так и с четырехкнопочными реализациями и играми. Если существует несколько версий игры, вам нужно будет выбрать мигающий красный для версии 1, мигающий желтый для версии 2 и так далее.
4-кнопочные игры
Игра на память, игра на координацию глаз и руки и две стратегические игры.
Саймон говорит, что это повторная реализация игры в том виде, в котором она была у меня в предыдущих проектах:
www.instructables.com/id/Fast-Easy-Simon/
www.instructables.com/id/Improved-Simon-Says-Code/
Игра похожа на любую другую игру «Саймон говорит».
Однако здесь я добавил версию для двух человек (когда вы выбираете вариант 2, мигает желтым цветом), где каждый игрок, в свою очередь, добавляет новую световую заметку в серию. Первый, кто неправильно повторил все предыдущее, проигрывает игру.
Ударь крота
В течение 30 секунд появляются разные родинки (красные, желтые, темно-синие, синие) по 1, 2 или 3 за раз. Вы должны «ударить» их, нажав соответствующие кнопки Btn1-4. Допускаются нажатия только одной кнопки, одновременное нажатие нескольких кнопок запрещено. Как долго группа родинок остается наверху, становится короче по ходу игры. Если ударить по всем видимым родинкам, появится новый набор; так что чем быстрее вы будете, тем больше кротов у вас будет шанс ударить.
По окончании игры на дисплее отобразится счет, загораясь по одному светодиоду на каждые 10 ударов родинок. Поскольку игра набирает 10 баллов за каждый удар крота, 5 световых индикаторов будут представлять стандартный результат 500+ баллов. Чтобы сыграть еще один раунд, вам придется повторно выбрать игру.
Я нажимаю пальцем на каждую кнопку, чтобы выполнять быстрые действия и набирать очки. Для более правильного вызова нужно использовать только один палец на одной руке, отвечая на использование одного молотка.
Моя типичная оценка при использовании одного пальца составляет 500, при использовании 4 пальцев (по одному на кнопку) - 600+. Моя самая высокая оценка - 700+. Использование нескольких пальцев особенно сложно в том смысле, что если есть перекрытие при нажатии одного и другого, второй не будет принят программным обеспечением, требуя от вас отпустить все кнопки, прежде чем другая будет принята. Если у кого-то загорелись все 12 светодиодов, чтобы набрать 1200+ очков, сообщите нам об этом.
Морская охота
Невидимая подводная лодка движется по глубине. Его первоначальное местоположение и направление случайны. Он движется по своему курсу после каждого вашего поворота. Вы должны предсказать его местонахождение с помощью отчетов сонара и потопить его глубинной бомбой. Сонар излучает тусклый свет (в обоих направлениях) из исходного местоположения и становится ярче (вместе со звуком) на расстоянии от субмарины. Однако обратите внимание, что подлодка может быть в любом направлении от вас и движется в неизвестном направлении. Глубинная бомба взрывается глубоко под тем местом, где она была запущена. Вы слышите приглушенный взрыв, если ничего или есть, иначе вы слышите большой взрыв субмарины и яркую вспышку.
Чтобы переместить курсор в то место, куда вы хотите бросить буй гидролокатора или глубинную бомбу, используйте кнопки Btn2 и Btn3 влево и вправо. Кнопка-1 используется для их запуска.
В версии 1 каждая попытка представляет собой комбинированное донесение глубинной бомбы и сонара; и вы можете использовать их неограниченное количество.
В версии 2, по очереди, лицом к лицу, чтобы увидеть, кому удастся потопить подлодку. Игрок 1 использует Btn1, а второй игрок использует Btn4 для запуска своих глубинных бомб.
В версии 3 отчеты о глубинных бомбах и гидролокаторах запускаются независимо друг от друга Btn1 и Btn4 соответственно. У вас есть только три глубинных бомбы. Вы можете получить все отчеты сонара, какие захотите. Вы проиграете, если не добьетесь его обвинений.
В версии 4 субмарина может двигаться со скоростью 1-3 деления за залп, а в остальном работает как версия 3, но вы получаете 6 глубинных бомб.
История: Впервые я создал игру «Морская охота» в 1970-х годах. Тогда устройством ввода-вывода был телетайп. Однако тогда море было двухмерной сеткой, а не одномерной, как здесь.
ПРИМЕЧАНИЕ: я прокомментировал ограничение глубины заряда в коде, полагая, что это уже было достаточно сложно для большинства людей.
Перевернул
Эта игра для двух игроков немного похожа на Ревери, в которой вы пытаетесь перекрасить все клетки в свой цвет, но это делается по-другому.
В этой игре для двух игроков цель одного игрока - выключить все огни, а другого - включить их все. Один игрок использует Btn1, чтобы либо выключить группу огней другого игрока, либо отказаться от одного из своих «выключенных огней» (включить его). Другой игрок использует Btn4 для включения или выключения группы «выключенных ламп», либо одного из своих выключателей.
Доска начинается со случайным набором светодиодов. Когда наступает очередь первого игрока, светодиоды у «курсора», представляющей интерес, могут быстро погаснуть или загореться. Во время хода игрока №2 в качестве указателя курсора загорается длинная вспышка светодиода. Если не тот игрок нажимает кнопку вне очереди, раздается очень короткий звуковой сигнал. Курсор перемещается влево на Btn2 и вправо на Btn3. Проигравший игрок начинает следующую игру.
Стратегия того, что переворачивать, может иметь большое значение.
Шаг 4: соревнования лицом к лицу
Игры для двух кнопок / двух игроков
В первом наборе игр с 4 кнопками только «Ударь крота» действительно полагается на полную независимость обработки кнопок. Я также реализовал четыре игры лицом к лицу, каждая из которых зависит от независимого обнаружения кнопок. Это следующие игры: Quick Draw, Tug a War, Chicken и Hot Hands (Slapsies).
Quick Draw (Тест на реакцию)
Соревнование начинается с отметками «Готово» / красным, «Готово» / желтым и «Ничья!» / Зеленым; быть довольно случайным относительно того, когда он дает вам зеленый свет. Выигрывает тот, кто первым нажмет на кнопку. Если вы нажмете слишком рано, кайф опозорит вас.
Игрок 1 использует Btn1 (слева), а игрок 2 использует Btn4 (справа).
Буксир войны
Начинается с «Готово», «Установить»… «ИДТИ!». В середине появляется объект - «лук» на веревке. Затем игроки нажимают кнопки так быстро и часто, как только могут. Лук будет двигаться в сторону игрока, у которого больше всего попаданий. Как только лук достигает одного конца, он становится победителем.
Курица
Этот конкурс начинается аналогично. После звука и зеленой вспышки "Вперед!" игроки нажимают и удерживают свои кнопки, вспышки света (их колесницы) начинают двигаться от них к другим. Побеждает тот, кто последним отпустит свою кнопку (выпрыгнет из колесницы), как раз перед тем, как две метки столкнутся друг с другом. Если кто-то выпускает слишком поздно или не выпускает вовсе, он терпит крах и проигрывает. Если оба подпрыгивают (выпускают) слишком поздно, никто не выигрывает.
Вначале по дисплею скользит пара противоположных светодиодов, в это время, если вы нажмете Fnc-Btn2, скорость игры увеличится. Это можно повторить несколько раз.
Горячие руки
Цифровая версия игры с ударами рук (также известная как Red-Hands или Slapsies). Чтобы начать, два игрока нажимают свои кнопки вместе, одна сторона отпускает, а затем пытается дважды нажать свою кнопку, прежде чем другая сторона сможет отпустить свою кнопку. Затем другая сторона пытается сделать то же самое. Об игроке, чей ход идет, в начале раунда загораются светодиоды на его стороне. Я обнаружил, что нажатие только на одну кнопку было слишком быстрым и легким, поэтому я сделал два требуемых, что требует больше действий и времени, например, когда нужно одновременно перевернуть одну руку над другими, а затем хлопнуть вниз. TBD: во второй версии это бесплатно для всех, в любое время любой игрок может попытаться получить лучшее от другого.
Уведомление ! Я советую вам распечатать правила работы вышеуказанных игр и перечитать их, прежде чем играть в игру, в которую вы недавно не играли. В противном случае вы можете разочаровать себя; думая, что игра не работает должным образом, хотя на самом деле это так, но у вас и игры разные пути и ожидания. Я сам становился жертвой этого более чем пару раз.
С восемью играми здесь и четырьмя в моем более раннем проекте Single-Line-LED-Display-Games, что делает программное обеспечение доступным для игры в 12 игр с помощью этой аппаратной комбинации четыре кнопки + светодиодная лестница.
До конца года у меня есть еще как минимум четыре развлекательных мероприятия для этого оборудования (с кнопочным дисплеем).
Шаг 5. Дополнительные контроллеры для 2 игроков
Для игр, для которых требовалось всего две кнопки, я, конечно, мог бы использовать 4-кнопочную печатную плату с этими играми; однако, играя в эти игры, человек становится довольно физическим. Итак, я использую отдельные узлы кнопок плунжерного типа, сделанные из куска пластиковой трубки, покрытой ручкой велосипеда и большой кнопкой.
Детали кнопки плунжерного типа:
- Труба капельной линии 1/2 дюйма, стойка спринклера или ПВХ (строительный магазин)
- Ручка велосипеда (Walmart)
- Большие кнопки (eBay)
- 2 резистора
Для обеспечения совместимости одна кнопка имеет резистор 75 Ом последовательно, а другая - 36-39 Ом; таким образом, программа будет видеть их как Btn1 и Btn4 соответственно.
Вы можете использовать шланг, скажем, от выброшенной метлы или ручки ракеля.
Можно даже сделать адаптер, к которому можно было бы подключить джойстики старых игровых приставок; одна кнопка огня должна быть подключена как Btn1 и Btn4 для другой, при этом разделяя Btn1-4 на кнопки навигации джойстика.
Апрель 2018: Теперь предпочитаю использовать 5/8 компрессионные муфты в качестве корпуса для кнопок с внешним плунжером. Большие кнопки (с небольшой лентой поверх их резьбы) идеально вписываются в них, и они очень хорошо ложатся в руку. Детям нравится использовать пару таких, я добавил пару наборов выводов, чтобы легко подключить одну внешнюю ручную кнопку к контактам Bnt1 и одну для Btn4.
Шаг 6. Обновление (я)
Я сделал корпус консоли, напечатанный на 3D-принтере, для размещения встроенного светодиодного лестничного дисплея и кнопок.
Я объединил 12 игр, которые я создал до сих пор, для этого 12-светодиодного дисплея в один набросок «Menu_12Games». Это программное обеспечение требует аппаратного обеспечения этого проекта, реализованного с помощью микроконтроллера флэш-памяти 32 КБ (например, Nano или Uno) и 5 кнопок, 4 основных + FncKey.
Меню выбора теперь двухуровневое; сначала вы выбираете 1 из 4 групп игр, а затем игру 1–4 в этой группе,… как указано ниже. Ожидая выбора, отображает периодическое сканирование R-Y-G-B, вы нажимаете Btn1-4 в качестве выбора в любое время, не имеет значения, что отображается, когда вы нажимаете свой выбор. Во время выбора «группы» все светодиоды хотя бы частично светятся во время сканирования RYGB. Чтобы выйти из любой игры или вернуться из выбора «игра» в «группу», нажмите FncKey-Btn1.
Я еще не написал окончательный код 4. У меня есть 3 написанных (включая «LeMans»). Я не придумал, какой будет последняя игра. Напишите мне с любыми идеями.
Обновление 25 января 17: Для тех из вас, кто пользуется доступом к 3D-принтеру, вас может заинтересовать чехол для игровой консоли, который я сделал для своего устройства: https://www.instructables.com/id/3D-Printed-Case- для-Inline-LED-Display-Console-и /
Обновление 17 февраля 17: Я добавил последние 4 игры, которые теперь доступны как «Menu_16Games.ino» в разделе «Шаг 7: Обновление, другие игры» инструкции: однострочные-светодиодные-дисплеи-игры (Menu_12Games.ino сейчас не существует)
Групповая игра: 1– Красный 2– Желтый 3 - Зеленый 4 - Синий
1 красный PushIt PingPong ShootEmUp JumpMan 2 Yel QuickDraw Tug_a_War Chicken Hot_Hands 3 Grn Le_Mans Spray PIG BiFunc 4 Blu SimonSays Whack_Mole Sea_Hunt Flip_d
Рекомендуемые:
Управление 2 сервоприводами с помощью аналогового джойстика: 5 шагов (с изображениями)
Управление 2 сервоприводами с помощью аналогового джойстика: Привет, ребята, это моя первая инструкция, и в этом посте я расскажу, как использовать аналоговый джойстик для управления сервоприводами с помощью Arduino UNO. Я постараюсь объяснить это как можно проще, надеюсь, вам понравится Это
Как считывать несколько аналоговых значений с помощью одного аналогового вывода: 6 шагов (с изображениями)
Как считывать несколько аналоговых значений с помощью одного аналогового вывода: в этом уроке я покажу вам, как считывать несколько аналоговых значений, используя только один аналоговый входной вывод
Простой беспроводной тренажер Taranis X9D + с использованием входа приемника SBUS: 9 шагов
Простой беспроводной тренажер Taranis X9D + с использованием входа приемника SBUS: цель этого проекта - подключить передатчик FrSky X-Lite к передатчику FrSky X9D + в конфигурации TRAINER с использованием дешевого приемника SBUS (12 $). Соединяя их таким образом, пилот-инструктор может использовать
Добавление аналогового миллиампера для вашего лазерного резака: 8 шагов (с изображениями)
Добавление аналогового миллиампера для вашего лазерного резака: это для всех, у кого есть лазерный резак K40 или K50 и более высокого качества и который устал терять деньги на трубках, которые, кажется, умирают быстрее, чем следовало бы. Это также для победителя конкурса Epilog Laser Contest. Надеюсь, это поможет вам в вашем путешествии
Симулятор игры для смартфона - играйте в игры для Windows, используя IMU для управления жестами, акселерометр, гироскоп, магнитометр: 5 шагов
SmartPhone Game Simulator - играйте в игры для Windows, используя IMU управления жестами, акселерометр, гироскоп, магнитометр: поддержите этот проект: https://www.paypal.me/vslcreations, сделав пожертвование на программы с открытым исходным кодом & поддержка дальнейшего развития