Оглавление:

POiNG! - Аркадная игра Arduino!: 3 шага
POiNG! - Аркадная игра Arduino!: 3 шага

Видео: POiNG! - Аркадная игра Arduino!: 3 шага

Видео: POiNG! - Аркадная игра Arduino!: 3 шага
Видео: Сделал игру по фильму за 30 секунд #программист #gamedev #компьютер #игры #айти 2024, Ноябрь
Anonim
Image
Image
POiNG! - Ардуино Аркада!
POiNG! - Ардуино Аркада!

Мы будем создавать аркадную игру в стиле PONG, в которой будут использоваться детали из набора «Самый полный стартовый комплект UNO R3 Project» от Elegoo Inc.

Полное раскрытие информации - Большая часть деталей, поставляемых для этого Руководства, была предоставлена автору Elegoo Inc.

Я хотел создать проект с использованием модуля LED Matrix. Базовый светодиодный дисплей 8x8 требует использования дополнительных регистров сдвига, чтобы иметь возможность адресовать отдельные светодиоды в матрице. Вместо этого в этом проекте используется светодиодный модуль MAX7219 8x8. Это очень простой в использовании модуль.

Я бы предположил, что из-за большого количества проводных соединений в этом проекте он будет считаться ПРОМЕЖУТОЧНЫМ уровнем инструктируемого.

Давайте начнем!

Запасы

Используемые детали стартового комплекта Elegoo (https://rebrand.ly/dvjb3w8)

  • Микроконтроллер UNO R3
  • Светодиодный модуль MAX7219 8x8
  • ЖК-дисплей 16x2
  • Потенциометр и ручка обрезки 10K
  • Dupont Wires
  • 220R резистор
  • Пассивный пьезо-зуммер
  • Модуль питания
  • Адаптер 9V 1A - необходим, потому что UNO не может обеспечить достаточный ток для светодиодного модуля 8x8
  • Макетная плата

Требуются дополнительные детали

Линейный потенциометр 2 x 10K - недорогой и широко доступный на eBay, AliExpress, Banggood и т. Д.

Шаг 1: Подключение схемы

Подключение схемы
Подключение схемы

Подключите цепь согласно электрической схеме. Не торопитесь. Для двух дисплеев требуется МНОГО подключений.

Обратите внимание на фотографии схемы, что модуль питания прикреплен к левой стороне макета, а адаптер постоянного тока 9 В, 1 А подключен к модулю питания, так что на светодиодную матрицу подается достаточный ток. НЕТ связи между выводом 5V на UNO и макетной платой. НО, контакт GND на UNO подключен к GND на макетной плате.

Дважды и трижды проверьте свою работу.

Шаг 2: Код Arduino

Это руководство предполагает, что вы уже знаете, как программировать на Arduino.

Загрузите прикрепленный скетч Arduino. Убедитесь, что вы добавили библиотеку LedControl в свои библиотеки Arduino. Я использовал версию Эберхарда Фале. Просто найдите MAX7219 в браузере управления библиотеками, и вы найдете и установите его.

Убедитесь, что файл pitches.h находится в папке вашего скетча. Он используется для воспроизведения звуков в игре.

Немного о сроках

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

Что еще более важно, команда delay () действительно выполняется только в методе loop (). Обычно он не выполняется так, как ожидалось, в других методах. Таким образом, все связанные с анимацией временные рамки выполняются в методе loop ().

Пример:

Мы определяем несколько переменных типа long и пару логических значений, а затем устанавливаем их в конце setup ().

bThresh = 80; // время в миллисекундах между обновлениями шара

ballTime = millis (); // устанавливаем текущее системное время

bon = ложь; // горит ли светодиод шара

ballReturn = false; // возвращаем ли мы мяч после удара ракеткой?

В loop () для рисования мяча у нас есть:

if ((millis () - ballTime> bThresh) && bon == false) {// если мяч выключен и прошло достаточно времени ballOn (); // включаем светодиод шара

bon = правда; // мяч теперь включен

ballTime = миллис (); // сбрасываем ballTime на текущее время

}

if ((millis () - ballTime> bThresh) && bon == true) {// если мяч включен и прошло достаточно времени

ballOff (); // выключаем светодиод шара

bon = ложь; // мяч выключен

ballTime = миллис (); сбросить BallTime на текущее время

}

Есть много способов сделать эту игру. Это всего лишь мои предпочтения.

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

Проверьте, скомпилируйте и загрузите свой код.

Наслаждайтесь игрой!

Шаг 3: Заключение

Заключение
Заключение
Заключение
Заключение

Я благодарю Elegoo Inc за предоставление стартового набора, используемого в этом проекте. Это набор с большим разнообразием деталей и модулей, который поможет вам хорошо освоиться в мире Arduino Maker.

Рекомендуемые: