Arduino тетрис: Урок 47. Игра тетрис на Arduino
|Содержание
Тетрис на ардуино
Устройство оснащено сенсорными кнопками и OLED-дисплеем, где и отображается элементы игры. Визитка располагает пьезодинамиком, который воспроизводит классическую мелодию тетриса. В основе изобретения лежит платформа Arduino. Своей визитке программист дал название Arduboy Arduino плюс GameBoy. Тетрис — не единственное достоинство изобретения.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Содержание:
- Люксембуржец отметил 30-летие тетриса созданием футболки, в которую встроена легендарная игра
- ТЕХНОЛОГИЯ ДЛЯ ВСЕХ
- Делаем Тетрис на Arduino
- Сдвиговый регистр 74HC595 и arduino
- АДРЕСНЫЕ СВЕТОДИОДНЫЕ МАТРИЦЫ
- 🎮Делаем Тетрис! [Arduino GameDev]
- Микроконтроллеры. Мой опыт использования
- Разработка и производство игровой доски тетрис
- Бюджетная графика для Ардуино. Пишем Тетрис для дисплея Nokia 5110.
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Arduino Project: Tetris using 2 LED matrix
Люксембуржец отметил 30-летие тетриса созданием футболки, в которую встроена легендарная игра
В этом гайде речь пойдёт о матрицах из адресных светодиодных лент. Если вы не в курсе про адресные ленты, то рекомендую изучить вот эту статейку. Фишка адресной ленты в том, что мы можем управлять любым из подключенных светодиодов. То есть по сути получаем полноценный 24 битный дисплей сверхнизкого разрешения! Зачем такое разрешение в 2к18 году? Начнём с компонентов. Матрицу можно склеить самому, для этого понадобится адресная светодиодная лента, например самая популярная на чипах WSb.
Да, сейчас есть уже более новая WS, но для наших целей она преимуществ не имеет. Целесообразно брать ленту с плотностью пикселей 60 светодиодов на метр для маленьких матриц ячейка 1. Лента такой же плотности стоит р за метр за светодиодов. А готовая матрица стоит на р дешевле!!! Ссылок оставляю несколько, ищите выгодные предложения и скидки P. Я закупаюсь в BTF-Lighting. Чем больше матрица, тем больше места занимает прошивка в памяти. Для прошивки GyverMatrixOS:.
Ленты всех типов. Нам нужна IP30 без влагозащиты , плотность 60 или 30 на метр по желанию. Модули, спаянные в гирлянду с шагом 12см. Идеальный вариант для создания новогодней матрицы на окно. Шаг между диодами — 12 см, в одной связке 50 диодов. Зная размеры своего окна, посчитать несложно. Сколько получилось у меня — смотрите в скетче в настройках. Тип матрицы — зигзаг.
Тип твёрдой матрицы — параллельная, тип мягкой — зигзаг! Корпусные блоки питания на 5V. Какой нужен ток — читайте ниже. DIY блоки питания на 5V. Некоторые компоненты для правильного подключения матриц.
Резисторы Ом, конденсаторы 6. Arduino NANO 3. Модуль реального времени для правильного функционирования часов на матрице. Плюсы и минусы указаны на рисунке, для больших матриц предпочтительнее использовать параллельный тип, так гораздо лучше организуется питание. Но вот с ответвлениями силовых проводов придётся повозиться. Если делать матрицу из гирлянды модулей, то естественно проще сделать её зигзагом.
Но обязательно проверить на разной яркости и убедиться, что тока хватает дальним светодиодам при просадке напряжения заданный белый цвет уходит в желтизну небольшая просадка или в красный сильная просадка напряжения.
В этом случае питание нужно будет продублировать толстыми проводами к каждому отрезку ленты к каждой строке матрицы. Матрица подключается к Arduino согласно гайду об адресной ленте , далее идёт выжимка из него. Важные моменты:. Логический пин Arduino соединён с пином DIN ленты матрицы через резистор с номиналом Ом можно брать любой в диапазоне Ом — 1 кОм.
Нужен для защиты пина Ардуино от перегрузки, то есть ограничить ток в цепи см. Электролитический конденсатор по питанию Arduino нужен для фильтрации резких перепадов напряжения, которые создаёт лента при смене цветов. Напряжение конденсатора от 6. Можно вообще без него, но есть риск нарушения стабильности работы! Конденсатор по питанию ленты нужен для облегчения работы блока питания при резких изменениях яркости матрицы. Опять же можно вообще без него, но есть риск нарушения стабильности работы!
Мощность и максимальный отдаваемый ток блока питания выбирается исходя из размера матрицы и режимов, в которых она будет работать. В таблице приведены значения тока потребления ленты. В прошивке GyverMatrixOS версии 1. Это очень крутая функция! Посмотреть на мою реализацию корпуса можно в видео про матрицу, файлы для 3D печати есть в архиве с проектом.
Первым делом нужно будет настроить в скетче размеры матрицы , точку подключения и направление первого отрезка ленты. Подсказка ниже. Данный тип инициализации матрицы позволяет подключать матрицу любой конфигурации с любым положением начала матрицы.
То есть как бы вы ни сделали и не расположили матрицу, она всё равно будет работать с корректным положением начала координат. Например хотим отзеркалить тип подключения 1, 0 по вертикали. Настраиваем его как 2, 2 — смотрите рисунок выше. Хотим отзеркалить тип 3, 1 по вертикали — настраиваем его как 2, 3.
Тип 3, 2 по горизонтали? Пожалуйста, ставим его как 2, 2. Надеюсь логика понятна. Если вы впервые работаете с Arduino, то остановитесь и изучите вот этот гайд. После установки драйверов и библиотек можно переходить к прошивке платформы.
У меня есть готовый проект с играми и эффектами, переходите на страницу проекта за подробностями и прошивками. Дальше будет информация для разработчиков, то есть тех, кто хочет написать что-то для матрицы самостоятельно! Для работы с лентой я использую библиотеку FastLED, потому что некоторые её возможности и функции действительно fast.
Для работы с матрицей я написал собственный набор инструментов, который в разы оптимальнее и быстрее того же Adafruit Neo Matrix, в связке с FastLED мой код работает просто шикарно. Библиотека FastLED входит в архив. В самом начале прошивки содержатся настройки типа матрицы и её подключения, тип подключения определяется стоя лицом к матрице.
Пользуясь этими функциями можно создавать различные эффекты разной степени сложности, а также классические игры! Related Posts.
ТЕХНОЛОГИЯ ДЛЯ ВСЕХ
В этой статье я приведу несколько реальных примеров, где может пригодиться сдвиговый регистр, а также постараюсь объяснить как его использовать. Как всем известно, arduino имеет достаточно много пинов, которые можно использовать в разработке, но бывают проекты, для которых недостаточно существующих пинов, и тогда на помощь приходят сдвиговые регистры. Они дают возможность значительно увеличить количество выходов, так задействовав всего 3 штуки, на выходе мы получим 8 дополнительных. Не сложно подсчитать, что мы с помощью одного сдвигового регистра 74HC мы получим 5 дополнительных пинов. А так же у 74HC есть прекрасная возможность выстраивать каскады, то есть при подключении двух регистров получим уже 16 выходов, заняв всего 3 пина на ардуино. Каскады можно выстраивать и из большего количество сдвиговых регистров. В качестве дисплея я использовал светодиодную матрицу размеров 8х8.
Cheap winder, Buy Directly from China Suppliers:Тетрис микрокарта Arduboy карта памяти microsd arduino дистанционный пульт светодиодные лампы.
Делаем Тетрис на Arduino
Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день. Войти Чужой компьютер. В гостях у Самоделкина! Делаем Тетрис на Arduino. Доставка новых самоделок на почту Получайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!
Сдвиговый регистр 74HC595 и arduino
В этой статье хочу рассказать, как сделать домашнюю метеостанцию, будильник, тетрис, или, даже, робота своими руками, а также, поделиться опытом использования и программирования микроконтроллера фирмы Atmel на плате Arduino UNO. Cразу хочу обратить ваше внимание на то, что я новичок, в этом деле, и обладаю минимумом базовых знаний. Простыми словами, микроконтроллер — это компьютер, состоящий из одной микросхемы, имеет на борту процессор, оперативную память, энергонезависимую память ПЗУ , устройства ввода-вывода. Функции МК микроконтроллера не задаются при его производстве, а программируются пользователем.
Тетрис известен практически всем, так как является одной из популярнейших классических игр. Мы попробовали разработать собственный тетрис на LED под управлением Arduino.
АДРЕСНЫЕ СВЕТОДИОДНЫЕ МАТРИЦЫ
Игра была выпущена 6 июня г. Мировую известность игра приобрела благодаря её выпуску на портативной консоли GameBoy компании Nintendo. Вверху игрового поля появляются случайные геометрические фигуры, которые падают пока не достигнут низа поля или других фигур. Таким образом игрок может выбирать место падения фигуры. Если из упавших фигур соберётся горизонтальный ряд без пробелов пустот , то этот ряд исчезнет, а всё что было над ним опустится. За каждый исчезнувший ряд игрок получает очки.
🎮Делаем Тетрис! [Arduino GameDev]
Arduboy — игра в стиле тетриса, созданная Кевином Бейтсом Kevin Bates и которая с легкостью поместится у Вас в бумажнике. Arduboy состоит из печатной платы, небольшого OLED-дисплея и микроконтроллера. Толщина устройства примерно такая же, как и у стандартной визитной карточки. Посмотрите видео, чтобы увидеть Arduboy в действии. Вдохновение пришло, когда я работал с модулем OLED. Некоторое время я обдумывал лучший способ защиты для гибкого шлейфа дисплея в конструкции печатной платы.
Тетрис с джойстиком от Sega на Arduino ws Готовые проекты.
Микроконтроллеры. Мой опыт использования
Хотелось начать повествование банально, но на самом деле я не страдал от скуки, не ошалел от внезапно навалившегося свободного времени, и у меня не завалялась случайно в кладовке пара бесхозных контроллеров. Идея проекта возникла совершенно инстинктивно на уровне подсознания, ностальгирующего по всяким несбывшимся мальчишеским мечтам. Очень вдруг захотелось собрать своими руками несложный игровой программно-аппаратный комплекс, с графикой низкого разрешения, и наполнить ее кодом почти забытых, но таких милых сердцу, старых компьютерных игр. Еще очень хотелось в этом проекте от души поэкспериментировать с железом и протоколами обмена данными.
Разработка и производство игровой доски тетрис
Визитные карточки бывают разные. Кто-то старается при создании визиток использовать необычные материалы с приятной на ощупь текстурой, а кто-то вкладывает все силы в шикарный дизайн. Но у визитной карточки Arduboy не существует конкурентов вообще. Ведь с помощью этой визитки вы можете играть в Tetris!
В этом гайде речь пойдёт о матрицах из адресных светодиодных лент.
Бюджетная графика для Ардуино. Пишем Тетрис для дисплея Nokia 5110.
Американским программистом Кевином Бейтсом Kevin Bates создана игра Arduboy Arduino в стиле тетриса, которая с легкостью поместится у вас в бумажнике. Игра Arduboy Arduino сделана в виде кредитной карты и создана на основе устройства Arduino и оснащена OLED-дисплеем, сенсорными кнопками и крошечным динамиком. Создатель называет своё творение Arduboy от слов Arduino и Gameboy , пишет devicebox. Сам создатель Arduboy, Кевин Бейтс рассказал: «Основная хитрость такой конструкции заключается во фрезерованных пазах, сделанных для поверхностного монтажа компонентов при помощи прессовой посадки, используя печатную плату как своего рода рамку. Используемые компоненты имеют толщину, близкую к толщине печатной платы 1,6 мм. Кроме того, чтобы свести к минимуму толщину устройства, контроллер ATMEGAP смонтирован таким образом, что его верхняя поверхность находится ниже уровня поверхности печатной платы. Вдохновение пришло, когда я работал с модулем OLED.
В этом году легендарной игре тетрис исполнилось 30 лет. По-своему отметил круглую дату люксембуржец Марк Крегер Mark Kreger , встроивший тетрис Электронная часть футболки-тетриса построена микроконтроллере Arduino Uno, который управляет экраном на светодиодах. После проигрыша игра бегущей строкой показывает уровень, до которого удалось дойти играющему, и количество набранных очков.
Код учебника по игре Arduino Tetris WS2812 LED
Светодиодная игра Arduino TETRIS
Помогите мне, поделившись этим сообщением
Поделиться
СЛЕДУЮЩИЙ ОБУЧЕНИЕ
Сегодня мы увидим, как создать эту потрясающую игру TETRIS на Arduino. В проекте также есть звуки, например, тема тетриса и другие звуковые сигналы, и вы можете добавить любой другой звук на SD-карту внутри модуля DFplayer. Для создания матрицы я использовал хорошо известную адресную светодиодную ленту WS2812 со светодиодами RGB. Таким образом, всего с одним проводом мы могли управлять всеми светодиодами и всеми цветами. Код, который я использовал, основан на этом оригинальном файле от MarginallyCleve на GitHub. Но я разместил новые части, такие как два модуля из 7 сегментов, чтобы распечатать счет и высший балл. И не только это, лучший результат сохраняется в памяти EEPROM, поэтому он всегда будет там. Теперь мы могли поставить игру на паузу и воспроизвести звуки. Давайте посмотрим, что нам нужно и как сделать этот проект.
ЧАСТЬ 1 — Что нам нужно
Для этого проекта нам нужно несколько компонентов. Полный список смотрите здесь по этой ссылке. Но в любом случае убедитесь, что вы будете использовать Arduino MEGA , потому что у UNO недостаточно памяти для этого проекта. Затем получите этот 7-сегментный дисплейный модуль с последовательным управлением и 8 цифрами. Плеер DF и микрокарта SD объемом 4 или менее 4 Гб. Возьмите светодиодную ленту WS2812, ту, что с 30 светодиодами на метр, и получите 5 м, то есть 150 светодиодов, потому что нам нужно 128. Вам понадобится блок питания 5 В и ток не менее 2 ампер. Вы также можете купить усилитель и поместить его между DFplayer и динамиком. См. все детали в полном списке деталей.
Нам нужно:
- 1 x Arduino MEGA: ССЫЛКА eBay
- 1 x 7-сегментный дисплейный модуль: LINK eBay
- 1 x 5 м WS2812 (30 светодиодов/м): ССЫЛКА eBay
- 1 х DFplayer: ССЫЛКА eBay
- См. полную часть lsit…
ЧАСТЬ 2 — Схема
Схема имеет несколько подключений. Мы начинаем с источника питания, подключенного к 220 В переменного тока с выключателем, и это даст нам 5 В. Эти 5V подключены ко всем модулям, Arduino и светодиодной ленте. Затем для DFplayer убедитесь, что вы добавили несколько перемычек, чтобы отключить контакты TX и RX на случай, если загрузка кода вызовет у нас проблемы. Добавьте резисторы 1k для устранения шума и тумблер между динамиком и DFplayer. Каждая кнопка подключена к GND, а другая сторона кнопки к одному входу Arduino. Нам не нужны внешние подтягивающие резисторы, так как все эти входы будут определены в коде как PULLUP. Подключите питание и последовательные провода к 7-сегментному дисплею и, наконец, подключите 5V, GND и светодиодный провод к полосе WS2812. Когда будете делать матрицу светодиодов, смотрите, чтобы стрелка на полоске шла в правильном направлении.
ЧАСТЬ 3. Изготовление корпуса
Во-первых, нам нужно знать расстояние между светодиодами, в данном случае 33 мм, как вы можете видеть ниже на «1». Я рисую 8 вертикальных и 16 горизонтальных линий на куске фанеры с интервалом 33 мм между ними. Затем я использую свой резак, чтобы вырезать основную часть, как вы можете видеть на цифре 2. Эта часть будет шириной 26,4 см для 8 столбцов светодиодов. Длина панели составит 52,8 см для 16 рядов светодиодов и еще 10 см для электроники внизу, так что общая длина составит 63 см. Также нам понадобятся две стороны длиной 63см и шириной 4см и еще 2 детали для верхней и нижней части корпуса длиной 26,4см и шириной 4см. Теперь, как вы можете видеть на цифре 3 в каждом ряду, у нас вырезано немного фанеры. Это маленькое отверстие предназначено для того, чтобы светодиодная лента могла проходить провода с другой стороны. Итак, вырежьте 16 отверстий с одной стороны и еще 16 с другой на все 16 рядов. Наконец, на «4» у нас есть готовые деревянные детали, поэтому возьмите светодиодную ленту WS2812 и вырежьте 16 полос по 8 светодиодов в каждой.
Хорошо, теперь мы можем снять защитную часть с обратной стороны светодиодных лент и приклеить их посередине каждого ряда на фанеру. будьте осторожны, на каждой светодиодной ленте есть несколько стрелок. Поместите первый ряд внизу со стрелкой влево, второй вправо, третий снова влево и так далее. Это очень важно. После того, как полоски приклеены на место, мы можем припаять провода друг к другу. Нам нужно всего 3 соединения, GND, 5V и данные. Следуйте стрелкам и конфигурации «S» и перейдите от первого светодиода в правом нижнем углу к последнему в верхнем левом углу.
Это длинная и скучная часть. Нам нужно сделать прокладки и создать своего рода сетку, чтобы отделить свет от одного светодиода от других светодиодов вокруг и избежать смешения цветов, а также придать квадратную форму вместо формы пятна. Для этого я буду использовать пену для моделирования RC, подобную той, что вы видите ниже. Его легко резать, он белый, поэтому он будет отражать свет. Нам нужно нарезать 7 длинных полосок длиной 52,8 см и шириной 3 мм, затем 15 коротких полос длиной 26,6 см и шириной 3 см. Но длинная часть состоит в том, чтобы вырезать отверстие для каждой строки и столбца, так что всего 105 отверстий, как вы можете видеть на «10». Мы будем использовать эти отверстия, чтобы соединить каждую полоску пенопласта и создать сетку, как вы можете видеть на «11». Итак, сначала поместите длинные отверстия отверстиями вверх. Затем добавьте все ряды отверстием вниз и завершите сетку. Наконец, вы можете добавить немного клея, чтобы зафиксировать сетку точно поверх линий, которые у нас есть на фанере.
В этой точке «13» у нас есть сетка, чтобы мы могли проверить, как она работает. Но свет должен попасть на непрозрачную поверхность, чтобы лучше ее увидеть. Итак, сначала как видите на «14» я склеиваю боковые стороны корпуса а потом вырезаем кусок бело-прозрачного акрила. Он должен иметь ширину корпуса, но длину только для покрытия сетки. Я вырезал эту часть и поместил ее поверх сетки, и разница огромна.
Как вы можете видеть ниже, свет с акрилом наверху лучше. Камера создает эффект свечения, но поверьте, с акрилом вы будете видеть свет намного лучше, а корпус будет выглядеть красиво.
ЧАСТЬ 4 — Добавление электроники
Я вырезал еще одну часть из фанеры, чтобы она стала верхней крышкой корпуса электроники. Затем я следую схеме и подключаю все. Добавьте DFplayer на отдельную плату и убедитесь, что вы загрузили mp3-файлы снизу и скопировали папку mp3 на пустую SD-карту. Это звуки темы Tetris и многое другое. Загрузите zip-файл в формате mp3 и распакуйте файл. Скопируйте папку mp3 на SD-карту. Не файлы, вся папка мп3. Затем, как вы можете видеть, я подключаю 5 В от источника питания к печатной плате, и здесь я подключаю все провода 5 В и GND. Приклейте все на место, динамик, кнопки на верхней фанере и джойстик и переключатель включения и выключения сбоку. Я делаю отверстия для входного кабеля питания и USB-разъема Arduino на случай, если я захочу перезалить другой код. Закройте кейс и загрузите код.
ЧАСТЬ 5 — Код
Загрузите код по ссылке ниже. По этой же ссылке вы найдете необходимую библиотеку для этого проекта, такую как библиотеки Adafruit_NeoPixel и DFplayer. Так что загрузите их и установите в Arduino IDE. Скомпилируйте, выберите плату Arduino MEGA и USB COM и загрузите код. Если код не загружается, это может быть из-за контактов TX и RX DFplayer, поэтому отключите их на несколько секунд, загрузите код и подключите их обратно.
#include//Загрузить здесь: https://electronoobs.com/eng_arduino_Adafruit_NeoPixel.php #include "EEPROMAnything.h" #include #include //Загрузить здесь: https://electronoobs.com/eng_arduino_DFMiniMp3.php
Прочитайте все комментарии в коде, чтобы понять больше. У нас есть разные функции для всех движений фигур, цветов, позиций и т. д.
ЧАСТЬ 6 — Учебное видео
Посмотрите видео для получения дополнительной информации и узнайте, какие варианты у вас есть с этим проектом. Что вы думаете ? Комментируйте ниже и помогите сообществу. Подумайте о том, чтобы поддержать меня на PATRON.
ПРЕДЫДУЩИЙ ОБУЧЕНИЕ
СЛЕДУЮЩИЙ ОБУЧЕНИЕ
Помогите мне, поделившись этой записью by Raphael Stäbler
Это четвертая часть серии, которая началась с моего введения в проект по созданию моей собственной портативной консоли. Узнав много нового о внутренней работе оригинального Gameboy, пришло время увидеть некоторые результаты. Это также на некоторое время завершит часть проекта по разработке эмулятора, так как пришло время сначала собрать некоторое оборудование. Но теперь: Тетрис.
На данный момент у меня есть полная реализация процессора и базовая адресная шина с хорошим представлением о том, что к ней подключать. Теперь я могу приступить к подключению картриджа Tetris к моей адресной шине. Помните, что первые 32 килобайта карты памяти сопоставляются непосредственно с картриджем, и, как оказалось, картридж Tetris занимает ровно столько места. Итак, давайте подключим его! В моем случае это означает размещение всех 32768 байт ПЗУ Tetris в начале моего массива памяти.
Если я сейчас запущу свой эмулятор, он действительно начнет выполнение кода Tetris. Однако он не заходит очень далеко, так как попадает в бесконечный цикл. Тем не менее, это намеренно, и все работает правильно. Игра просто ждет, когда произойдет вертикальное пустое прерывание . Я упомянул об этом прерывании в своем последнем посте, заявив, что это основной игровой цикл. Прерывание запрашивается видеоконтроллером, поскольку оно отмечает конец полного кадра. Так что без видеоконтроллера ничего особенного не произойдет, а даже если бы и было, без видеовыхода я все равно ничего не увижу.
Основная задача видеоконтроллера состоит в том, чтобы отрисовывать пиксельные данные видеопамяти в соответствии с информацией, хранящейся как в памяти атрибутов спрайтов , так и в регистре управления отображением . Я говорил обо всем, кроме последнего, в предыдущем посте. Регистр управления отображением определяет, какой размер спрайта использовать и какая часть видеопамяти содержит фоновую карту.
Есть и другие вещи, которые контролируются регистром управления дисплеем и другими регистрами, например, какую цветовую палитру использовать, включены спрайты или нет, а также как прокручивать фоновую карту. Также есть функция окна, которая позволяет рисовать фоновую карту только на части экрана. Я не собираюсь реализовывать что-либо из этого прямо сейчас, так как это не требуется для правильной работы Tetris.
Здесь вы можете найти текущую реализацию моего видеоконтроллера.
Мой тестовый дисплей подключен к Teensy 4.0 с запущенным эмулятором
Не так много нужно сделать, чтобы подключить мой тестовый дисплей к макетной плате Teensy. Этот 2,4-дюймовый дисплейный модуль управляется через последовательный интерфейс (SPI) и имеет полную библиотечную поддержку в рамках экосистемы Arduino, что означает, что мне не нужно писать для него драйвер. Я использую слегка модифицированную версию библиотеки ILI9341_t3, написанную Полом Стоффрегеном, создателем платы Teensy. Я только добавил метод, который позволяет мне легко передавать горизонтальную линию на дисплей — потому что так будет работать мой видеоконтроллер, генерируя одну линию за другой, пока не будет отрендерен полный кадр. После этого v запрошено пустое прерывание и все начинается сверху.
Фактическая связь между Teensy и модулем дисплея осуществляется с помощью 5 проводов: провод часов , провод выбора микросхемы , провод данных/команд , провод главный вход/ведомый выход и главный выход / подчиненный в проводе . Они очень распространены для SPI-передачи, и я буду говорить об этом более подробно в следующих постах, так как я буду иметь дело с SPI гораздо больше.
Дополнительно имеется провод для соединения общей массы между двумя платами, а также подключение питания через резистор для фоновой подсветки экрана.
В своем посте о ЦП я говорил о важности подсчета тактов и о том, как можно понять, что ЦП DMG работает на частоте 4 МГц или 1 МГц. Я выбрал 1 МГц, и это целевая скорость для моего эмулятора. В идеале он должен работать быстрее, поэтому у меня есть возможность усложнить его или искусственно замедлить.
Я могу измерить скорость своего эмулируемого процессора, дав ему поработать некоторое время, подсчитывая общее количество выполненных циклов. Разделив циклы на время, я получаю количество циклов в секунду, также известное как Герц .
Это показывает общую скорость 0,68 МГц . Это значительно ниже целевого 1 МГц.
На самом деле получается, что много времени теряется при общении с дисплеем. Если я отключу связь с дисплеем, я получаю эмулированную скорость 1,77 МГц .
Причина этого в том, что передача данных SPI не оптимизирована по скорости и требует гораздо больше ресурсов процессора Teensy, чем это действительно необходимо. Прямо сейчас у процессора много времени простоя во время каждой передачи — время, которое лучше потратить на запуск эмулятора.
Не так просто переписать библиотеку дисплея, чтобы использовать функции прямого доступа к памяти (DMA) ARM Cortex , которые необходимы для оптимизации связи SPI. Из-за этого, а также из-за того, что я все равно не буду использовать этот дисплей для своей окончательной сборки, я не буду беспокоиться прямо сейчас. На данный момент важно отметить, что производительность может быть значительно улучшена.
Это завершает первую часть проекта, который был доказательством концепции . Теперь очевидно, что Teensy 4.0 может работать с эмулятором Gameboy.
Далее будут некоторые разработки оборудования.