Оглавление:
Видео: Игра Arduino Space Rocks: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Вне зависимости от того, играют ли они на компьютере, в телефоне, на игровой консоли или на отдельном устройстве, многие видеоигры включают в себя элемент избегания препятствий. Конечно, вам могут начисляться очки за сбор жетонов или прохождение лабиринта, но будьте уверены, что в игре, вероятно, есть что-то, единственная цель которого - помешать вам сделать это. Первой видеоигрой был Pong, но после этого самыми популярными играми были такие, как «Asteroids» или «Pac-Man». Более свежая вариация - это простая, но захватывающая игра «Flappy Birds».
Недавно я увидел, что кто-то сделал простую двухуровневую версию «Flappy Bird», которую проигрывали на обычном ЖК-экране 1602. Я подумал, что это может понравиться внукам, поэтому решил сделать свою вариацию с нуля. Версия 1602 имеет только два уровня, поэтому я решил вместо этого использовать ЖК-дисплей 2004 года (20x4), чтобы немного увеличить сложность игры. Я также решил сделать его больше похожим на «Астероиды», попросив игрока провести «корабль» через лабиринт «космических камней». Даже если вы не заинтересованы в создании игры, некоторые элементы программного обеспечения могут быть использованы в одном из ваших собственных проектов.
Шаг 1. Аппаратное обеспечение
Аппаратное обеспечение может быть основано практически на любой версии Arduino. Я сделал прототип с помощью Nano, а затем записал код в чип ATMega328. Это тот же самый чип, который используется в Nano, но его использование само по себе позволяет получить более компактную конструкцию и меньшее энергопотребление. Как видите, я построил схему на небольшой макетной плате, которая устанавливается на ЖК-модуль. Другой аспект, который отличается, заключается в том, что Nano работает на частоте 16 МГц с использованием внешнего кристалла, но я решил использовать встроенный осциллятор на 8 МГц для чипа ATMega328. Это экономит детали и энергию.
ЖК-дисплей 2004 года подключается к Arduino так же, как ЖК-дисплей 1602. Интересное отличие заключается в адресации расположения дисплеев. Очевидно, есть разница, потому что здесь четыре строки вместо двух, но в 2004 году третья строка является продолжением первой строки, а четвертая строка является продолжением второй строки. Другими словами, если у вас была тестовая программа, которая просто отправляла строку символов на ЖК-дисплей, 21-й символ отображался бы в начале третьей строки, а 41-й символ переносился бы обратно в начало первой строки. Я использую эту характеристику в программе, чтобы удвоить длину лабиринта.
Я решил сделать свою версию с питанием от батареи, поэтому я использовал обычную литий-ионную батарею 18650, 3,6 вольта. Для этого мне потребовалось добавить небольшую плату для подзарядки через USB и еще одну небольшую плату для повышения напряжения батареи до 5 вольт для ЖК-дисплея и микросхемы ATMega. На рисунках показаны модули, которые я использовал, но есть также универсальные модули, которые выполняют обе функции.
Шаг 2: Программное обеспечение
Программное обеспечение одинаково для чипа Nano и ATMega328. Единственная разница в способе программирования. Я использую свою собственную версию 1602 LCD, и программное обеспечение LCD в этом проекте основано на этом. Мне действительно нужно было добавить возможности для работы с дополнительными строками дисплея 2004 года, а также добавить процедуры для смещения дисплея. Сдвиг дисплея обеспечивает эффект движения «камней» мимо «корабля».
Как упоминалось ранее, строки 1 и 3 образуют круговую очередь, а также строки 2 и 4. Это означает, что после 20 смен строки 1 и 3 меняются местами, а строки 2 и 4 меняются местами. После 40 смен линии возвращаются в исходное положение. Из-за такого поведения исходный 20-символьный лабиринт становится совершенно другим, когда строки меняются местами. Это сделало жизнь интересной, когда я попытался составить лабиринт. Наконец, я просто открыл электронную таблицу Excel, чтобы наметить путь без необходимости постоянно менять программное обеспечение. Представленное здесь программное обеспечение имеет две версии лабиринта (одна закомментирована), поэтому вы можете выбрать, какую из них хотите, или создать свою собственную.
Изначально я хотел, чтобы это было достаточно просто, чтобы в нее могли играть молодые внуки, но я также хотел, чтобы в ней была дополнительная проблема, если они (или кто-то другой) слишком хорошо в ней разбираются. Игра начинается со скоростью сдвига, равной 1 секунде. Внутренняя частота тиков составляет 50 мс, это означает, что есть 20 интервалов, в течение которых можно нажимать кнопки вверх / вниз. На самом деле нажатая кнопка потребляет 2 тика, потому что интервал 50 мс используется для обнаружения нажатия, а другой интервал 50 мс используется для ожидания отпускания. В лабиринте по умолчанию максимальное количество нажатий до следующей смены равно трем. Самый простой способ повысить сложность игры - сократить время между сменами, чтобы пара строк кода делала именно это по мере увеличения счета. Скорость сдвига настроена так, чтобы увеличиваться на 50 мс каждые 20 смен, при этом минимальная скорость ограничена до 500 мс. Эти параметры легко изменить.
Помимо изменения скорости сдвига, основная логика программного обеспечения состоит в том, чтобы переместить «корабль» и определить, столкнулся ли «корабль» с «камнем». Эти функции используют определенный массив «камень / пространство», а также массив, который определяет ячейки памяти на дисплее. Счетчик сдвига соответствует длине строки ЖК-дисплея (0-19) и используется в качестве индекса в этих массивах. Логика несколько усложняется тем фактом, что строки меняются местами каждые 20 отсчетов смен. Аналогичная логика используется для определения положения «корабля», который может находиться на любой из четырех линий.
Оценка для каждого воспроизведения - это просто подсчет количества произошедших сдвигов, и рекорд сохраняется во внутренней EEROM микроконтроллера. Библиотека EEPROM используется для чтения и записи в эту память. Доступные процедуры позволяют выполнять однобайтовое чтение / запись и чтение / запись значений с плавающей запятой. Значение 0xA5 сохраняется в первой ячейке EEROM, чтобы указать, что был сохранен высокий балл. Если это значение присутствует при включении питания, то считывается и отображается значение с плавающей запятой для рекорда. Если значение 0xA5 отсутствует, то вызывается процедура для инициализации высокой оценки значением 1. Та же самая процедура вызывается, если требуется сброс высокой оценки. Рекорд возвращается к значению 1, удерживая одну из кнопок вверх / вниз, а затем кратковременно нажимая кнопку сброса.
Шаг 3. Игра в игру
При подаче питания отображается текущий рекорд. После отображения рекорда отображается лабиринт из «камней» и «корабль», затем игра начинается через несколько секунд. Когда «корабль» ударяется о «камень», сообщение «CRASH AND BURN» мигает несколько раз перед отображением счета игры. Если установлен новый рекорд, то это сообщение также отображается. Новая игра запускается нажатием кнопки сброса.
Рекомендуемые:
Игра в рулетку DIY 37 Leds Arduino: 3 шага (с изображениями)
DIY 37 Leds Arduino Roulette Game: Roulette - это игра в казино, названная в честь французского слова, означающего маленькое колесо
Цифровая игра Ludo Dice с 7-сегментным дисплеем Arduino: 3 шага
Digital Ludo Dice с проектом 7-сегментного дисплея Arduino: в этом проекте 7-сегментный дисплей используется для случайного отображения числа от 1 до 6 всякий раз, когда мы нажимаем кнопку. Это один из самых крутых проектов, который нравится делать всем. Чтобы узнать, как работать с 7-сегментным дисплеем, нажмите здесь: -7 segme
Игра Jumping Man с использованием Arduino: 3 шага
Игра Jumping Man с использованием Arduino: Всем привет !!! Добро пожаловать в мой первый учебник. Я был большим поклонником игры Jumping Dinosaur, поэтому я попытался создать аналогичную игру с помощью Arduino UNO и ЖК-экрана. Это интересный проект, требующий лишь усилий
Автоматизированная игра в динозавров с использованием Arduino: 4 шага
Автоматическая игра с динозаврами с использованием Arduino: Итак, привет, парень, добро пожаловать обратно в новую статью в этой статье, мы создадим автоматизированную игру с динозаврами с использованием Arduino. Эту автоматизированную игру с динозаврами очень легко сделать. За несколько шагов вы можете сделать эту игру с динозаврами дома, когда я смотрел Тик-Ток несколько дней назад, я иду
Игра Саймона - Веселая игра !: 5 шагов
Simon Game - Fun Game !: Справка: После долгих выходных вы должны очень постараться, чтобы выполнить все задания и работу, за которые вы отвечаете. Пора нам тренировать мозг, не так ли? Помимо этих скучных и бессмысленных игр, есть игра под названием Simon Game