Оглавление:
- Шаг 1. Что вам нужно?
- Шаг 2: быстрое прототипирование
- Шаг 3: Изготовление кожуха
- Шаг 4: Изготовление светодиодной матрицы
- Шаг 5: Написание игровых кодов и отладка оборудования
- Шаг 6: Собираем все вместе
Видео: Stackers Arcade Game: 6 шагов (с картинками)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Привет, ребята, сегодня я хочу поделиться с вами этой удивительной аркадной игрой, которую вы можете сделать с помощью кучи светодиодов Ws2812b и микроконтроллера / FPGA. Behold Stack Overflow - наша аппаратная реализация классической аркадной игры. То, что начиналось как школьный проект, быстро превратилось в дело любви, поскольку мы начали тратить все больше и больше времени на разработку нашей игры и извлечение из нее большего (и пренебрегая при этом учебой xD). В конце концов, наша игра была настолько хорошо построена и хорошо принята нашей школой, что была конфискована (в качестве демонстрационного материала для следующей группы учеников). Что ж, мы всегда можем построить вторую. Давайте начнем!
Онлайн-версия игры:
Шаг 1. Что вам нужно?
Материалы:
1. Микроконтроллер / микрокомпьютер / FPGA - FPGA используется для реализации логики нашей игры. Выберите свою плату, для нашего проекта мы должны использовать плату Mojo FPGA. Для непосвященных это тип платы, в которой для реализации своих функций используется оборудование, а не коды. Следовательно, я бы сказал, что это довольно низкий уровень и совершенно другой, чем если бы вы использовали Arduino или Pi. Если вы используете другие платы, вам придется написать свой собственный код, но эту игру довольно легко кодировать, и привет! Теперь вы тоже можете научиться программированию!
2. Светодиоды Ws2812b - здесь мы используем светодиоды для создания дисплея для нашей игры. Не может быть производителем, если не трогал Ws2812b до xD. Это одноадресный, что означает, что вы можете отрезать отдельные светодиоды и вставлять их в любую форму, которая вам нравится. И это RGB означает, что вы можете выводить любой цвет, который вам нравится. Кроме того, очень хорошо разработана FastLED - библиотека Arduino для управления Ws2812b. Я бы порекомендовал людям использовать Arduino вместо FPGA, если у вас ее нет. Вы можете купить светодиоды на Taobao / Amazon, но мы купили наши в башне Сим Лим в Сингапуре.
3. Дерево. Для внешнего корпуса использовалась фанера толщиной 1 см, а для светодиодной матрицы - фанера толщиной 0,3 см. Мы нашли запас древесных отходов в фабричной лаборатории нашей школы.
4. Светорассеивающий акрил. Для нашего экрана мы пробовали разные типы акрила и нашли матовый акрил под названием PL-422, который действительно хорошо рассеивает свет. Если вы не можете найти точную модель, поищите матовый акрил. Мы купили наш в Dama Plastics в Сингапуре.
5. Пенопласт - чтобы отделить каждый отдельный пиксель света, нам нужна была сетчатая структура, и этот пенопласт - идеальный материал для этого. Мы купили пенопласт толщиной 0,5 см в школьном книжном магазине.
6. Большая красная кнопка - Хорошо, нам не обязательно иметь такую большую красную кнопку, но всегда хорошо иметь кнопку, которую люди могут хлопнуть! xD Мы купили его в башне Сим Лим в Сингапуре.
Инструменты:
1. Клей для дерева
2. Паяльник.
3. Припой
4. Провода. Лучше, если у вас будут мягкие провода по сравнению с более жесткими. И одноядерный по сравнению с многоядерным.
5. Инструмент для зачистки проводов
6. Кусачки
7. Просверлить сверлом 1 мм.
8. Спиральная пила.
9. Ленточная пила
Отладка:
1. Блок переменного тока.
2. Осциллограф.
Шаг 2: быстрое прототипирование
Для нашего проекта мы использовали быстрое прототипирование, прежде чем построить нашу светодиодную матрицу и запрограммировать нашу игру. Причина в том, что мы не хотим строить светодиодную матрицу только для того, чтобы понять, что наши коды не работают или наша игровая логика каким-то образом ошибочна.
Что касается аппаратного обеспечения, то на первом этапе мы просто протестировали нашу логику по смещению световых узоров на нашей простой светодиодной матрице. После того, как мы проверили, что логика работает нормально, мы пошли вырезать полосы из 5 светодиодов Ws2812b, просто чтобы проверить нашу игровую логику с разными строками. Как только это сработает, мы приступим к изготовлению светодиодной матрицы в полном масштабе.
Мы также протестировали различные образцы акрила со светодиодами, прежде чем остановились на PL-422 в качестве лучшего светорассеивателя. Что касается структуры сепаратора, мы также протестировали разную высоту для полного рассеивания светодиода. В конце концов, мы пришли к выводу, что квадрат 3 см * 3 см с высотой 4 см лучше всего подходит для диффузии. Основываясь на этом оптимальном размере, мы также решили, какой размер фанеры потребуется для светодиодной матрицы 5 x 11, оставив между квадратами зазор 0,5 см для пенопласта.
Что касается программного обеспечения, мы стараемся быть как можно более модульными - сначала мы проверяем, могут ли светодиоды загораться, прежде чем приступить к добавлению функции сдвига, а затем и других. Если вы этого не сделаете, результаты могут быть катастрофическими. Мы усвоили это на собственном горьком опыте, когда пытались закодировать всю игру в виде большого фрагмента, прежде чем поняли, что не можем отладить ее. Ой!
Шаг 3: Изготовление кожуха
Для нашего корпуса мы использовали классические ощущения и внешний вид аркадных автоматов. Во-первых, мы разрезаем тонкую фанеру, чтобы быстро создать прототип формы, так как тонкую фанеру легче и быстрее разрезать и тестировать. Когда мы были удовлетворены нашими размерами и формой, мы начали использовать более толстую фанеру для изготовления корпуса. Мы использовали ленточную пилу, чтобы разрезать более толстую фанеру, и пилу для спиралей, чтобы разрезать более тонкую. После этого мы склеили их столярным клеем.
Что касается задней части фанеры, мы хотели легко получить доступ к электронике внутри, поэтому мы сделали ее фиксируемой деталью, которую вы можете легко удалить, когда захотите.
Чтобы прикрепить кнопку, мы сначала нарисовали круг размером с диаметр микровыключателя кнопки (нижняя длинная часть кнопки). Затем мы просверлили отверстие у края и с помощью пилы для прокрутки пропилили круг. Затем поместили кнопку и прикрутили.
Мы также вырезаем тонкий кусок фанеры в качестве основы нашей светодиодной матрицы в соответствии с размерами, которые мы рассчитали ранее.
Примечание. Прошу прощения за отсутствие пошаговой инструкции. Мы не документировали все этапы полностью, и к тому времени, когда мы поняли, что нам нужно задокументировать этапы, оболочка уже была готова. На схеме тоже не окончательные размеры.
Шаг 4: Изготовление светодиодной матрицы
Используя тонкий кусок, который мы вырезали ранее, мы сначала отмечаем положение каждого светодиода, рисуя квадрат на основе нашей структуры из пенопласта и рисуя крест в середине квадрата как место, куда мы должны вставить светодиод. Затем мы также просверливаем по 3 маленьких отверстия с каждой стороны светодиода для проводов и припаиваем их к каждому светодиоду.
Мы последовательно подключаем каждый ряд светодиодов к их контактам Data In и Data Out и припаиваем каждый GND и VCC к общему проводу. Ведущий вход Data In будет генерировать световые узоры для каждой строки, и мы подключили его к распиновке микроконтроллера / FPGA. Вы также можете припаять последние данные одной строки к ведущим данным другой строки. Принцип работы светодиода Ws2812b заключается в том, что каждый светодиод содержит микросхему, которая принимает необходимые данные из провода и передает остальные по цепочке. Мы основали наш светодиод на еще одном фантастическом Instructables (на самом деле, мы его точно скопировали! XD)
Здесь мы также хотели бы подчеркнуть важность использования мягкой проволоки. Если вы используете жесткие жесткие провода для ведущего контакта Data In, то каждый раз, когда вы дергаете за провод, он может выдернуть медную прокладку на вашем Ws2812b, что приведет к его разрушению. В этом проекте, прежде чем мы перешли на мягкие провода, мы уничтожили в общей сложности 40 светодиодов, что составляет 1/3 светодиодов, необходимых для нашего проекта.
Инструкции:
Шаг 5: Написание игровых кодов и отладка оборудования
Mojo работает на Lucid HDL, который не является самым популярным языком. Мы не можем найти никаких светодиодных библиотек Ws2812b в Lucid, поэтому мы прибегли к написанию собственной библиотеки, что является очень интересным опытом. Для этого мы сначала проанализировали передаваемый сигнал с помощью библиотеки FastLED Arduino и написали коды для его воспроизведения. Вот трюк аппаратной отладки, осциллограф очень и очень полезен для анализа сигналов, будь то отладка вашего собственного сигнала, в котором вы не уверены, или проверка и копирование других сигналов.
После написания библиотеки для Ws2812b мы переходим к написанию кода для игры, мы использовали функции битового сдвига для перемещения каждого блока влево и вправо и использовали побитовое И для И для квадратов каждой строки в предыдущую строку. Вы также можете подумать о реализации этого в Arduino, что не должно быть так сложно. Мы даже для удовольствия закодировали игровые экраны!
В нашей игре было 2 уровня: игра с видимым стеком (зеленый) и игра с невидимым стеком второго уровня (синий).
Даже после того, как у нас есть рабочие коды и рабочая светодиодная матрица, иногда мы все еще сталкиваемся с такими проблемами, как мерцание света или включение света, когда этого не должно быть. Проблема обычно возникает из-за неправильного заземления, уровня электропитания или помех. Здесь вам понадобятся другие инструменты отладки оборудования, такие как регулируемый блок питания, чтобы проверить, достаточно ли питания Mojo / Arduino или слишком много. По моему опыту, Ws2812b имеет довольно широкий диапазон рабочих напряжений от 2,8 до 5 В. Здесь у меня есть видео, на котором видно, как огни сходят с ума после того, как я увеличиваю мощность.
Однако дальнейшая проверка показала, что у нас был какой-то неподходящий припой, после повторной пайки наша проблема была решена. Также могут быть проблемы с помехами или перекрестными разговорами, но, к счастью, мы никогда с ними не сталкивались.
Коды Github:
Битовый сдвиг Arduino:
Поразрядное И для Arduino:
Шаг 6: Собираем все вместе
У вас есть корпус и светодиодная матрица. Пришло время собрать все воедино. Сначала помещаем поролон спереди, а светодиодную матрицу за ним и регулируем положение. Поскольку пена имеет очень высокое трение, она была просто закреплена трением, в то время как светодиодная матрица приклеивалась горячим способом. После этого мы разместили экран перед сеткой. Затем мы подключили вывод каждой строки к микроконтроллеру и начали играть!: D
Что мне нравится в этом проекте, так это его гибкость: вы всегда можете перепрограммировать микроконтроллер, чтобы он стал частью другой игры, и попробовать что-то вроде анимации или игры на реакцию. Надеюсь, вам, ребята, понравится это делать, и вы научитесь чему-нибудь для этого. GgEz!
Рекомендуемые:
Сделать часы-зеркало бесконечности: 15 шагов (с картинками)
Создание зеркальных часов бесконечности: в предыдущем проекте я построил зеркало бесконечности, где моей конечной целью было превратить его в часы. (Сделайте красочное зеркало бесконечности) Я не стал этим заниматься после его создания, потому что, хотя оно и выглядело круто, было несколько вещей с этим
Хэллоуинская тыква с движущимся аниматронным глазом - Эта тыква может закатить глаз !: 10 шагов (с картинками)
Хэллоуинская тыква с движущимся аниматронным глазом | Эта тыква может закатить глаз!: В этом руководстве вы узнаете, как сделать тыкву на Хэллоуин, которая пугает всех, когда ее глаз движется. Отрегулируйте расстояние срабатывания ультразвукового датчика на правильное значение (шаг 9), и ваша тыква превратит в камень любого, кто осмелится взять свечу
Crabot: 6 шагов (с картинками)
Crabot: Crabot - это инженерный проект для людей, которые хотят узнать больше об электротехнике, кодировании Arduino и робототехнике. Он также предназначен для дальнейших экспериментов, улучшений и веселья
Сделать коробку ТАРДИС Бесконечность: 9 шагов (с картинками)
Сделайте коробку ТАРДИС Бесконечность: я ранее построил модель ТАРДИС. Одной из определяющих характеристик ТАРДИС является то, что она больше внутри, чем снаружи. Очевидно, я не могу этого сделать, но в этом Руководстве я адаптирую модель, чтобы попытаться сделать так, чтобы она выглядела круто
Платформер с бесконечными уровнями на GameGo With Makecode Arcade: 5 шагов (с картинками)
Платформер с бесконечными уровнями на GameGo с Makecode Arcade: GameGo - это портативная игровая ретро-консоль, совместимая с Microsoft Makecode, разработанная TinkerGen STEM education. Он основан на чипе STM32F401RET6 ARM Cortex M4 и предназначен для преподавателей STEM или просто людей, которым нравится создавать ретро-видеоигры