Zx uno vga 2m vga настройка
Сама по себе, идея использовать Arduino для создания компьютера с BASIC не нова, но насколько я знаю, все они не поддерживают вывод цветного изображения. В некоторых проектах использовались LCD-мониторы, а в других — библиотека TVout, которая выводит чёрно-белое изображение. Кроме того, многие из этих проектов требуют дополнительные модули и специальные платы расширения. Тут же нужно всего-то иметь два Arduino, несколько резисторов, плюс разъёмы для PS/2 клавиатуры и VGA-монитора.
Для проекта нужно две платы Arduino: один будет основным (или «мастером»), в нём работает интерпретатор Tiny Basic Plus (это порт Tiny Basic на языке Си, адаптированный для поддержки Arduino). Также этот Arduino управляет PS/2 клавиатурой. Вывод из первого Arduino через последовательный порт отправляется на второй Arduino, который с помощью библиотеки VGAx генерирует VGA-сигнал.
Программу на языке BASIC в собранный нами компьютер можно будет ввести с помощью PS/2 клавиатуры, а результат можно будет посмотреть на VGA-мониторе: разрешение получившегося изображения 24 столбца на 10 строк, размер символов — 5х6 пикселей, доступно 4 цвета.
После введения программы, её можно будет сохранить в энергонезависимой памяти самого Arduino, а также код программы предусматривает управление I/O пинами Arduino.
Подключение
- 2 x резистор 470 Ом
- 2 x резистор 68 Ом
- 1 x разъем DSUB15 (мама)
Подключите их, как показано на следующей схеме.
Примечание: разъем DSUB15 показан с задней стороны.
Схема организации VGA интерфейса на Arduino UNO
Шрифты
Для создания собственных шрифтов вы можете использовать мою утилиту 2bitfont. Я разработал два супермаленьких шрифта, которые могут использоваться совместно с VGAX или в других проектах. Они показаны ниже:
Следующий пример использует первый шрифт.
Видео
Данная библиотека реализует кадровый буфер 120x60px, где каждый пиксель хранится как 2 бита (четыре цвета). Кадровый буфер хранится внутри SRAM и требует 1800 байтов. Ваша программа не может использовать более 200 байтов, поэтому будьте внимательны! Если хотите, то можете использовать другую плату Arduino UNO для управления платой, которая использует библиотеку VGAX.
Кадровый буфер VGAX использует 2 бита для каждого пикселя. Внутри каждого байта хранится 4 пикселя, упакованных в следующем порядке: самый левый пиксель – это самые старшие 2 бита, самый правый пиксель – это самые младшие 2 бита:
Порядок хранения пикселей в байте кадрового буфера
Немного статистики
Китайский конвертер более капризный по сравнению с PAL-кодером, поэтому некоторые компьютеры, хорошо работающие с PAL-кодером, не "взлетят" при подключении к конвертору.
На практике, помимо "Байта", к китайскому конвертеру удалось успешно подключить компьютеры:
— Игровая приставка Эльф;
Не захотели работать с конвертером:
— Pentagon-128 (по другим сведениям конвертор можно заставить работать с "пентагоном", если "поиграться" с настройками конвертера).
Опции темы
Отображение
- Линейный вид
- Комбинированный вид
- Древовидный вид
1. Подключаем основной Arduino с интерпритатором TinyBasic и с PS/2 клавиатурой
TinyBasic Plus и библиотека VGAx работают с Arduino IDE 1.6.4.
Если у вас уже установлена более новая версия, то лучшее решение — загрузить эту версию с официального сайта в формате .zip, и распаковать в отдельную папку. Здесь можно загрузить эту версию для Windows.
Потом нам понадобится библиотека PS2keyboard, её можно загрузить отсюда. После скачивания просто распакуйте архив, и скопируйте его содержимое в «arduino-1.6.4\libraries».
Дальше, загрузите файл TinyBasicPlus_PS2_VGAx.ino, и прошейте его в основной Arduino.
Это версия обычного TinyBasic Plus, где была добавлена поддержка библиотеки PS/2.
Больше информации о TiniBasic Plus и руководства (на английском языке) можно найти тут.
Если на этом этапе нет проблем (в том числе, проблем с совместимостью), то Tiny Basic будет автоматически запущен при включении Arduino. И его можно будет протестировать с помощью последовательного порта на вашем ПК. Для этих целей я использую PuTTY, но вы можете использовать и другую подобную программу, по вашему вкусу.
В настройках нужно правильно установить COM-порт (тот же, что используется в Arduino), и скорость передачи = 4800.
И тут уже можно протестировать нашу систему, набрав какую-нибудь программу на Basic с клавиатуры вашего ПК (позже мы подключим PS/2 клавиатуру напрямую к Arduino).
Для примера, можно набрать:
Прервать бесконечный цикл этой программы можно с помощью комбинации клавиш Ctrl+C (это не сработает, если мы будем делать это с клавиатуры PS/2).
Теперь подключим PS/2 клавиатуру.
3. Загружаем библиотеку VGAx и код во второй Arduino, и соединяем его с основным
Для начала, загрузите код VGAx-PC.ino и скопируйте его к себе на компьютер в папку с таким же именем.
Потом — загрузите с GitHub бибилиотеку VGAx. Её нужно поместить в подпапку «libraries» Arduino IDE.
ВАЖНО! Эта бибилиотека работает с Arduno IDE 1.6.4 и может быть не совместима с другими, более новыми версиями.
Теперь загрузите VGAx-PC.ino во второй Arduino (я тестировал на Arduino Nano, но с Arduino Uno тоже не должно быть проблем).
Для этого нужно:
- два Arduino Uno Rev.3, или два Arduino Nano 3.x (на основе ATmega328)
- разъем DSUB15, т.е. гнездо VGA или кабель с таким гнездом, который не жалко отрезать
- резисторы: 2 на 68 Ом и 2 на 470 Ом
- разъем PS2
- провода
- необязательно: макетная плата
Имеется разветвитель VGA на 2 монитора и 1 vga разъем на видеокарте. Когда подключаю, оба монитора определяются как 1. Можно ли сделать разную картинку на 2 мониторах?
- Вопрос задан более двух лет назад
- 11924 просмотра
Можно, если установить вторую видеокарту или заменить имеющуюся на другую, с двумя аналоговыми выходами. Одними проводами это не решается.
Врёти вы всё, 21й век на дворе а вы всё тут такую мелкую проблему не можете решить одним проводком :D
На видеокарте кроме VGA есть еще разъемы? DVI, HDMI? Если есть, можно купить переходник DVI->VGA (HDMI->VGA)
Мы уже выяснили, что у вас есть разъём DVI и можно подключить второй монитор. ЕСТЬ ДВА ВАЖНЫХ МОМЕНТА.
1. Встроенные и дешёвые видяхи обычно не могут выводить на два монитора, там один RAMDAC (или как сейчас эта деталь называется?) и разъёмы просто запараллелены. СМОТРИТЕ СПЕЦИФИКАЦИЮ.
2. Есть два вида DVI, я их называю DVI+ и DVI−, по виду крестика на разъёме.
Если крестик полный, в DVI есть VGA-линии, и покатит любой пассивный переходник, который можно купить за сотню на компоразборках или выпросить у знакомого сисадмина (если ты в Киеве — приходи, дам, остался один).
Если неполный — нужны активные переходники вроде такого.
Сам удивился, что они на Али дёшевы, думал, 10…20$ стоят.
Допустим, на моей старенькой 750Ti есть два DVI: один DVI−, другой DVI+. Так что если сменю карточку, а старую отдам брату — видимо, он сможет подключить её к старому монитору. Но только к одному: хочет второй — только DVI/HDMI. Или через активный переходник. Кстати, там четыре разъёма, но спецификации говорят: до 3 мониторов.
Это VGA библиотека для Arduino UNO. Для использования данной библиотеки вам необходимы только 4 резистора и один разъем DSUB15. Данная библиотека требует микроконтроллер ATmega328 (или выше), она не работает с семейством ATtiny и ATmega168.
Вывод изображения с помощью библиотеки VGAX для Arduino UNO
Вывод изображения с помощью библиотеки VGAX для Arduino UNO Макет Подключение разъема DSUB15 к Arduino UNO
Подключение при помощи платы RGB-VGA
Очень хорошие по качеству изображения результаты даёт подключение "Байта" к SVGA монитору при помощи платы RGB-VGA.
Плата выпускается в нескольких вариантах как в виде готовых изделий, так и как конструктор для самостоятельной сборки. Я покупал свою себе плату здесь.
Для подключения платы к компьютеру требуются следующие сигналы: RGB, яркостной сигнал (I), строчный синхроимпульс (SSI), кадровый синхроимпульс (KSI), 14МГц с тактового генератора (F14MHz) и питание (+5В, GND).
Назначение контактов разъёма платы RGB-VGA:
Назначение перемычек платы:
Более подробно по плате, перемычкам, подключению к различным Спектрумам можно почитать тут.
Плата требует входные сигналы с ТТЛ уровнями, поэтому вариант подключения платы прямо к RGB-выходу "Байта" отпадает. Придётся паять проводами прямо к плате компьютера:
Места подпайки для подключения платы RGB-VGA на плате "Байта":
В качестве иллюстрации работы платы — фото изображения с монитора:
Утилиты
2bitimage
Для преобразования изображений в формат VGAX (2 бита на пиксель) я написал простое веб-приложение, которое читает изображение и создает исходный файл C/C++ для использования с VGAX.
Изображение, которое вы можете использовать в исходниках, должно использовать только те цвета, которые вы генерируете аппаратно. Например, если вы используете выводы красного и зеленого цветов, вы должны сначала преобразовать ваше изображение с помощью другой утилиты, поскольку ваше изображение должно использовать только эти четыре цвета: красный, зеленый, желтый и черный. 2bitimage упаковывает из в 2-битный формат, используемый библиотекой VGAX, но не выполняет какого-либо конвертирования цветов.
Исходный файл веб-приложения находится в каталоге tools. Вы можете открыть 2bitimage.html с помощью веб-браузера и запустить его локально. Я использую Google Chrome, поэтому не знаю, работает ли всё с другими браузерами.
Подключение ПК к телевизору через VGA
Какие бы действия из описанных вами не были предприняты для подключения ПК к телевизору, основным устройством в любом случае будет компьютер.
Шаг 2: Подключение
Во многом соединение телевизора и ПК схоже с аналогичным процессом для проектора.
-
Отсоединив устройства от сети, подключите VGA-кабель к соответствующему порту на вашем телевизоре.
Примечание: Нужный VGA-разъем может располагаться как на материнской плате, так и на видеокарте.
После выполнения действий экран ТВ станет дополнительным монитором для вашего компьютера, сохранив при этом свои первоначальные функции.
Шаг 1: Подготовка
Двусторонний VGA-кабель можно приобрести в любом магазине с компьютерными комплектующими. При этом его длину следует подбирать исходя из личного удобства.
В случае отсутствия VGA-разъема на одном из подключаемых устройств, вы можете воспользоваться специальным переходником, разновидность которого определяется наличием прочих интерфейсов. Один из таких девайсов, VGA-HDMI, показан ниже.
Как и многие другие разновидности, VGA-кабель можно сделать самостоятельно. Однако подобный провод имеет не самую простую структуру и без должных знаний лучше обзавестись готовым.
Единственное предназначение VGA-интерфейса заключается в передаче видеосигнала. Подобный тип соединения не позволяет передавать файлы или звук.
Исходя из сказанного, вам потребуются внешние колонки, подключенные к ПК.
Завершив подбор и приобретение компонентов, можно приступать к подключению.
Простое подключение RGB, к монитору VGA
Давно тут уже народ старался подключить различные компы с RGB выходом к монитору с VGA входом, но более или менее четкая схема этого устройства так и не была разработана.
Я думаю не каждому хочется отваливать за заводской RGB to VGA конвертер кучу денег, поэтому предлагаю следующий простой способ подключения.
В принципе именно с RGB сигналом все просто, здесь все соединяется напрямую. Загвоздка состоит в том, что для VGA требуются две синхронизации (вертикальная и горизонтальная), а со Спектрума и других подобных компов выходит одна синхронизация (смешанная). Вот с ней и разберемся.
p.s. На всякий случай привожу еще и схему УСР.
Последний раз редактировалось =ANDRO >02:36 .
Когда-то «ZX Spectrum» стал одним из моих первых персональных компьютеров. На нём я постигал азы программирования – от бейсика до ассемблера. И тут уместно будет вспомнить народную мудрость: «То, что не удаётся запрограммировать на ассемблере, приходится паять». Поэтому параллельно я подробно изучал схематехнику компьютера «ZX Spectrum». И так, постепенно, хобби переросло во вполне профессиональную деятельность в составе группы спектрумистов «FFC Computers». Я занимался тогда русификацией игр, дискетированием «ленточных» программ, ремонтом и доработкой Спектрумов (1995-1997 гг.)
За три года профессиональной деятельности в этой сфере через мои руки прошло огромное количество клонов Спектрума. Приносили в ремонт и другие компьютеры, но всё же Спектрумов было подавляющее большинство. И даже однажды мне довелось подключать отечественный контроллер дисковода к фирменному Спектруму 128k (тогда это была большая редкость).
С тех пор у меня сохранилось огромное количество документации к различным клонам Спектрума, сопутствующим устройствам, и к другой компьютерной технике распространенной в то время. Ну и кое-какое железо экзотическое сохранилось )
Начиная с этой публикации, постепенно буду делиться накопленной информацией. Думаю, многое будет полезно поклонникам Спектрума, да и не только )
«Как сделать компьютер? | Building ZX Spectrum 128k clone + Beta Disk Interface + AY-3-8910 (YM2149F)»
Как-то нашел у себя сразу несколько оригинальных плат популярнейшего клона Спектрума – «Ленинград 48k». И тогда я решил непременно собрать эту систему с полным апгрейдом до версии 128k с контроллером дисковода и, разумеется, музыкальным сопроцессором. Весь этот процесс я заснял на видео (смотрите выше) с подробными комментариями. Ниже привожу схемы, по которым работал и подробный план апгрейда.
Принципиальная схема компьютера «Ленинград 48k»
Монтажная схема компьютера «Ленинград 48k»
Схема на просвет адаптированная для печати:
Увеличение памяти компьютера «Ленинград 48k» до 128k
Схема увеличения памяти и коррекции дешифрации портов ввода-вывода
для импортной памяти 41256 DRAM, регенерация в 256 циклов:
Схема увеличения памяти и коррекции дешифрации портов ввода-вывода
для отечественной памяти 565РУ7, регенерация в 512 циклов:
Схема увеличения памяти и коррекции дешифрации портов ввода-вывода
при использовании двух линеек памяти 565РУ5:
Для всех доработок используем 7 дополнительных микросхем:
eD1 — К555(1533)ТМ9 (устанавливается поверх D31)
eD2 — К555(1533)КП11 (устанавливается поверх D30)
eD3 — К555(1533)ЛЕ1 (устанавливается поверх D2)
eD4 — К555(1533)ЛА3 (устанавливается поверх D40)
eD5 — К555(1533)ЛЛ1 (устанавливается поверх D34)
eD6 — К555(1533)ЛИ1 (устанавливается поверх D8)
eD7 — К555(1533)ЛЛ1 (устанавливается поверх D13)
Для соединений я использовал провод МГТФ 0.12. Термостойкая оплетка сохраняет провода в целости при плотном монтаже, а небольшое сечение провода позволяет легко перекидывать соединения со стороны пайки на сторону монтажа деталей через любые свободные отверстия на печатной плате, как показано на фото:
Другие доработки компьютера «Ленинград 48k»
1. Стабилизация тактового генератора
2. Нормализация строчной развертки (для кварца частотой 14000 КГц)
3. Стабилизация кадровой развертки
4. Корректировка прорисовки линий (дуги, окружности и т.п.)
5. Установка ПЗУ 27C512
6. Доработка сигнала INT
Схема подключения контроллера XT-клавиатуры Profi:
Схема «читалки» с магнитофона на К554СА3:
Этапы сборки, немного фоток
Оригинальная плата «Ленинград 48k» 1988:
«Ленинград 48k» в сборе:
«Ленинград 48k» с контроллером XT-клавиатуры Profi:
«Ленинград 128k» в сборе:
«Ленинград 128k» с контроллером дисковода и музыкальным сопроцессором:
«Ленинград 128k» с контроллером дисковода, музыкальным сопроцессором и дисководами:
Кстати, недавно копаясь в ворохе старого железа и документации, нашел совсем уж экзотическую вещь: настоящий ценник, видимо где-то середины 90-х:
Да, да, контроллер тогда стоил 75 тысяч рублей )) И обратная сторона ценника порадовала не меньше – выяснилось, что он нарисован на куске перфокарты. 😉
Да. В этом есть определенный философский подтекст: ценник на контроллер носителя информации нового поколения нарисован на обрывке носителя информации старого поколения. )
Имя файла: DIZZY_5r_48k.zip (109K)
MD5: e55b3dd84cba8895ebcce6b4efbe5607
Игра «DIZZY 5». Русифицированная версия игры,
адаптированная мной в 1996 году для спекртрума 48k.
В архиве игра в трех форматах: TAP, HOBETA, SCL.
Имя файла: wildseyr.zip (68K)
MD5: 62511c9b12f42794053805e140af3009
Игра «Сеймур на Диком Западе» (русифицированная мной в 1996 году).
В архиве игра в формате SCL.
Имя файла: test48k.bin (2,0K)
MD5: 4bf68803c17aa614b7fbfa939549eaec
Контрольная сумма прошивки: 85E7
Тестовая прошивка 48k (модифицированная версия —
убрал нудную процедуру заполнения экрана, ненужную проверку ПЗУ).
Имя файла: test128k.bin (2,0K)
MD5: 5247c2d7d5c77d270d98d6c0080493da
Контрольная сумма прошивки: E413
Тестовая прошивка 128k.
Имя файла: sos48k_only.bin (16K)
MD5: 4c42a2f075212361c3117015b107ff68
Контрольная сумма прошивки: 1F64
Стандартная операционная система
для «ZX Spectrum» 48k (1982 Sinclair Research Ltd).
Имя файла: 27512.bin (64K)
MD5: 77cec243abe304ba3603b63b88709cae
Контрольная сумма прошивки: 9135
Комбинированная прошивка для ПЗУ 27512:
Банк 1 — TR-DOS Version 5.5H Copyright (C) 1993 by Rst7.
MD5: de4131214186667b9fb4022343d34444
Контрольная сумма: 3F81
Банк 2 — SOS 128k (Стандартная ОС для «ZX Spectrum» 128k).
MD5: 97da465c399ff70b907dfd8291e8f9d3
Контрольная сумма: 266E
Банк 3 — SOS 48k (Стандартная ОС для «ZX Spectrum» 48k).
MD5: 6e09e5d3c4aef166601669feaaadc01c
Контрольная сумма: 2C86
Всё остальное можно найти в продаже. Если не найдутся отечественные детали, всегда можно найти зарубежные аналоги.
ТТЛ-логика, предпочтительнее 1533 (аналог 74ALS) или 555 (аналог 74LS):
1533ЛН1 (74ALS04) — 2 шт.
1533ТМ2 (74ALS74) — 3 шт.
1533ИЕ7 (74ALS193) — 4 шт.
1533ЛЕ1 (74ALS02) — 1 шт.
1533ЛП5 (74ALS86) — 1 шт.
1533ЛА3 (74ALS00) — 1 шт.
1533ЛИ1 (74ALS08) — 1 шт.
1533ЛЛ1 (74ALS32) — 1 шт.
1533КП11 (74ALS257) — 8 шт.
1533КП13 (74ALS298) — 2 шт.
1533ИР22 (74ALS373) — 1 шт.
1533ИР9 (74ALS165) — 1 шт.
1533ИР16 (74ALS295) — 1 шт.
1533ЛА4 (74ALS10)- 1 шт.
КМОП:
561ИЕ10 (4520) – 1 шт.
Процессор:
Z80 – 1 шт.
Постоянная память:
EPROM 27C64 — 2 шт. или одна EPROM 27C128 (для версии 48k)
Оперативная память:
565РУ5 — 8 шт. или 565РУ7 — 8 шт. (первые выводы РУ7 нужно будет соединить между собой и заземлить /для версии 48k/)
Вместо 565РУ7 можно ставить зарубежные аналоги: 41256/41257 DRAM, MB81256/MB81257 DRAM.
Кроме того, в Спектрум можно ставить динамическую память большего объема и соотв. потребуется меньшее кол-во микросхем. Как это делается, расскажу в следующем материале.
Узел чтения с магнитофона рекомендуется собирать по приведенной выше схеме на К554СА3 (зарубежный аналог IL311ANM).
Многие современные видеокарты и ТВ по умолчанию оснащены VGA-интерфейсами, позволяющими без лишних проблем соединить данные устройства. Именно об этой разновидности подключения и последующей его настройке мы расскажем далее по ходу статьи.
Спрайты
Пример спрайта
2. Подключаем PS/2 клавиатуру к основному Arduino
Информация и библиотека были взяты из этого материала.
По существу, вам нужно соединить следующие четыре контакта:
Data клавиатуры к Arduino pin 8,
IRQ (clock) клавиатуры к Arduino pin 3;
а также подключить землю (GND) и питание +5V, соответственно.
Я использовал PS/2 разъём cо старой нерабочей материнской платы, его можно легко сдуть с помощью фена.
Распиновка PS/2 разъема есть на рисунке:
Пиксель
Это простой пример использования функции putpixel4 . Функция putpixel4 помещает за раз 4 пикселя. Следующий код создает шаблон цветов в функции setup :
2bitfont
С помощью 2bitfont вы можете создавать свои собственные шрифты из одного изображения и конвертировать их для использования с библиотекой VGAX. Утилита читает изображения, которое содержит все символы шрифта, разделенные вертикальной пустой линией. Все символы извлекаются и конвертируются в исходный файл C/C++.
- Как центрировать видеосигнал по горизонтали? В настоящий момент я не смог центрировать сигнал по горизонтали без потери нескольких пикселей или генерации аудиосигнала. Вы можете откалибровать смещение по горизонтали вручную на своем мониторе, или, если на нем есть автокалибровка, использовать ее.
- Как центрировать видеосигнал по вертикали? Вы можете сделать это, изменяя постоянную RENDERLCOUNT в VGAX.cpp.
- Как изменить аудиовывод с ANALOG0 на другой? Вы можете изменить этот вывод на другой аналоговый вывод. Изменить эту строку в VGA.cpp: и измените 1 на другой вывод в ассемблерной строке в том же файле: (1 означает A0, 2 означает A1, 4 означает A3, 8 означает A4, и так далее)
- Как предотвратить мерцание экрана? В настоящий момент нет механизма для предотвращения мерцания. Правильный способ предотвращения мерцания заключается в использовании двойного (кадрового) буфера, но для этого недостаточно памяти.
Как известно, напрямую подключить компьютер "Байт" к SVGA монитору никак нельзя. Частоты развёртки не те. Однако в последние годы стали доступны по цене китайские конвертеры видео семейства GBS (GBS 8000, 8200, 8220). Достаточно сделать заказ на Aliexpress, и через несколько недель конвертер ваш 🙂
Так вот, через этот конвертер можно подключить Байт к монитору. На плату достаточно подать сигналы RGB, синхро и GND. Однако есть небольшая проблема. Короче дело в том, что на конвертер, как и на телевизионный SCART, нужно подавать сигналы RGB с градациями яркости. В "Байте" сигналы RGB выведены без градаций, яркостной сигнал выводится отдельно на разъём RGB, не подмешиваясь к цветовым сигналам.
Я вас огорчу, но придётся паять. На практике мной опробована схема формирования двухуровневых цветовых сигналов из предыдущего раздела сайта:
Встраиваем схему в компьютер, подаём сигналы RGB, SYNC, GND с выхода компьютера на конвертер, настраиваем качество изображения через экранное меню конвертера и наслаждаемся 🙂
Конечно же конвертер не даёт идеального качества изображения, однако оно не хуже того, которое получается с выхода PAL-кодера.
Конвертер не имеет своего источника питания. В качестве блока питания я использовал ненужное зарядное устройство от мобилки. Оно выдаёт 5В при токе порядка 400 мА.
На изображении, выдаваемом конвертером, бывают помехи в виде белых точек. Эта проблема решается допайкой резистора и конденсатора.
Содержание:
Таймеры
Данная библиотека использует все 3 таймера микроконтроллера ATmega328.
TIMER1 и TIMER2 настроены для генерирования импульсов HSYNC и VSYNC. Код настройки этих двух таймеров написан Ником Гаммоном. Я сделал только несколько изменений для использования вывода 9 вместо вывода 10.
TIMER0 используется для исправления джиттера прерываний. Я изменил ассемблерный код, изначально написанный Charles CNLOHR.
По умолчанию TIMER0 используется на Arduino для реализации следующих функций:
Вместо использования данных функций, вы должны воспользоваться их альтернативными версиями, предоставленными моей библиотекой.
Прерывания
Библиотека VGAX генерирует видеосигнал, используя только прерывания, поэтому внутри функции main() , вы можете делать что угодно. Ваш код будет прерываться, когда необходимо будет сгенерировать VGA сигнал.
Оригинальный код от Ника Гаммона генерирует пиксели строки внутри main() . Я предпочитаю генерировать строку внутри прерываний, чтобы оставить микроконтроллер свободным для других вещей, например, запуск игр или проигрывание звуков.
Предупреждение: Вы не можете добавлять других обработчиков прерываний, иначе генерация VGA сигнала будет нарушена.
Использование библиотеки
Чтобы воспользоваться библиотекой, вам необходимо включить ее заголовочный файл.
Класс VGAX – статический, поэтому вы можете использовать его без создания его объекта:
Или, если предпочитаете, вы можете создать собственный объект, но помните, что в какой-либо момент времени не может быть более одного объекта VGAX :
Выводы и порты
Генерирование видео реализовано при использовании порта PORTD, поэтому вы не можете использовать любые выводы на PORTD.
Сигнал вертикальной синхронизации генерируется на выводе 9. Версия от Гаммона использует вывод 10, но я предпочитаю сохранить выводы 10, 11, 12, 13 для использования SPI.
Загрузки:
Шаг 3: Настройка
В случае со многими моделями ТВ после подключения видеосигнал может не передаваться. Связано это с неправильными настройками как на ПК, так и на телевизоре.
Телевизор
-
На стандартном пульте управления ТВ нажмите кнопку с подписью «Input».
Компьютер
-
С помощью контекстного меню на рабочем столе откройте окно «Разрешение экрана».
На этом процесс подключения и настройки можно считать завершенным.
Аудио
Данная библиотека также реализует асинхронную генерацию тона (аудио)! Аудиосигнал генерируется во время примерно 15 периодов тактового сигнала, внутри задней площадки строчного гасящего импульса VGA. Качество этого сигнала плохое, но его можно использовать для воспроизведения некоторых мелодий. Для управления длительностью нот вы можете использовать методы tone(frequency) и noTone() . Ваш зуммер должен быть подключен к выводу A0.
Изображения
Пример изображения
Данный пример показывает функцию copy . Функция copy копирует все пиксели из массива байтов. Массив должен быть сохранен в PROGMEM , и размер этого массива должен быть равен размеру кадрового буфера VGAX:
Обратите внимание, что размер в байтах рассчитывается с помощью BWIDTH вместо WIDTH , поскольку пиксели упакованы в байты (4 пикселя в одном байте).
Заключение
Представленный в статье метод подключения является наиболее простым, так как VGA-интерфейсами обычно оснащаются не только ПК и ТВ, но и многие лэптопы. Однако качество подобного подключения оставляет желать лучшего и по возможности следует воспользоваться HDMI-кабелем.
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
4 цвета
4 цвета, генерируемые библиотекой, не предопределены.
Вы может соединить PIN6 и PIN7 с двумя RGB выводами разъема VGA DSUB15, выбрав комбинацию цветов, которую предпочитаете.
Ниже приведены некоторые из возможных комбинаций, которые реализуются без дополнительных компонентов:
Комбинация цветов 0 Комбинация цветов 1 Комбинация цветов 2 Комбинация цветов 3 Комбинация цветов 4 Комбинация цветов 5
Аудио
VGAX также генерирует аудиосигналы! Данный пример демонстрирует два метода, которые могут использоваться для генерирования аудиосигналов: tone(frequency) и noTone() .
Читайте также: