Arduino vga shield своими руками

Arduino vga shield своими руками

VGA это сокращение от Video Graphics Array, протокола отображения видео, который часто встречается в мире электроники. В VGA используется одна «частота следования пикселей» и установленная частота вывода видео данных горизонтально, строка за строкой, пока весь кадр не будет отображен, а потом всё начинается снова.

Цель и обзор этого проекта

Целью данного проекта является использование Arduino для вывода стандартного изображения с красным, зеленым и синим цветом на компьютерный VGA монитор. Кроме платы Arduino используется плата с VGA разъемом.

Для того, чтобы вывести красный, зеленый и синий цвета на компьютерный VGA монитор, мы должны договориться о разрешении, которое мы будем пытаться имитировать. Например, 800×600 удобно, т.к. используются целые круглые числа, и частота следования пикселей составляет 40МГц. И можно имитировать VGA разрешение 800×600 и выводить 200 линий красного, 200 линий зеленого и 200 линий синего цветов. Поскольку Arduino работает на частоте 16МГц, невозможно получить доступ к каждому пикселю, поэтому мы будем выводить целиком линии.

В VGA используется смешивание красного зеленого и синего цветов для получения всех цветов радуги. Параметры на каждом из этих контактов показывают монитору, насколько интенсивно должен гореть этот цвет. Мы не регулируем интенсивность цвета, поэтому у нас всегда для каждого из цветов 100% красного, 100% зеленого или 100% синего.

Hsync и Vsync соединения

Для того чтобы знать, какая линия сейчас отображается и завершен ли кадр, используется два сигнала синхронизации: горизонтальная синхронизация H-SYNC и вертикальная синхронизация V-SYNC. Это самые важные сигналы, и если их тайминги будут нарушены, то VGA выход не будет работать как надо.

Основы теории VGA

В спецификации VGA описывается отображение цветовых данных, горизонтальной и вертикальной синхронизации, и об определенном времени на каждое действие, которое нельзя пропускать.

Arduino UNO тактируется кварцевым генератором 16МГц и одна инструкция выполняться за один цикл, что означает, что каждая инструкция в нашей программе будет выполняться точно за (1/16000000) секунды или примерно 62,5 наносекунды.

Так как каждая инструкция выполняется 62,5 наносекунды, и мы должны проводить синхронизацию в определенное время, важно, что каждое время с картинки выше делиться на 62,5 наносекунды, а это значит, что мы можем использовать инструкции с задержкой, чтобы получить идеальное время для синхронизации.

При использовании 800x600VGA, каждая строка заканчивается горизонтальным импульсом синхронизации, который сообщает монитору данные следующей строки. После синхронизации 601 линии, монитор ожидает импульс вертикальной синхронизации продолжительностью 4 линии. В этот момент есть пауза в 23 линии. Благодаря вертикальной синхронизации и задней площадки строчного гасящего импульса, линии отображаются, но информация о цвете не используется.

Есть две основных части кода:
— Цвет для циклов + Hsync
— Вертикальная синхронизация

3 цикла используются для создания трех различных цветов, которые отображаются на экране. Вот выдержка из кода для генерации 200 линий красного цвета. Время указано в комментариях, и вы можете легко увидеть соответствие.

Источник

Arduino vga shield своими руками

Подключаем к Arduino VGA-монитор с помощью библиотеки DueVGA

С помощью этой VGA-библиотеки можно генерировать VGA или NTSC / PAL-композитный видеосигнал на Arduino Due или подобной ему сборке . Поддерживаемые разрешения до 320×240 в 8-битном цвете и 800×600 в монохромном режиме. Схема очень проста и содержит всего 3 резистора для монохромного режима и 10 резисторов для полноцветного. Библиотека имеет основные функции для рисования графики: точки, линии, треугольники, круги, прямоугольники.

Библиотека содержит классы для вывода текста на экран в VGA -режиме: print(. ) и println(. ).

Скачать библиотеку можно здесь – скачать DueVGA (3 Мб). Установка проста – скачиваем, распаковыем, скидываем папку » VGA ” в ваш каталог с библиотеками для Arduino .

Сам сайт проекта расположен здесь — DueVGA.

Схема подключения

Итак, для монохромного режима нам хватит 3-х резисторов, а для цветного понадобится целых десять. Номиналы смотрим в этой таблице:

Да, если у вас вдруг есть резисторы с точными номиналами 2 кОм или 510 Ом, то поставьте их вместо 2,2 кОм и 470 Ом для более точной цветопередачи.

Смотрим, как все подключать:

Вывод MOSI расположен на плате на 6-пиновом SPI -разъеме. Подключать к нему 100 Ом резистор нужно только в монохромном режиме. Точно так же, подключение к выводам 34-41 соответствующих резисторов нужно только в цветном режиме. Для монохромного режима надо подключить VGA -выходы через стоомный резистор так, как показано на этом рисунке:

Читайте также:  Зимний кожух для генератора своими руками

А вот чертеж цоколевки VGA-порта:

Также, с помощью этой библиотеки можно подцепить Arduino и к NTSC или PAL телевизору по композитному кабелю. Для этого нам потребуется 6 резисторов и один электролитический конденсатор на 100 мкФ.

Вот таблица номиналов резисторов:

Тут, как и в VGA-режиме, желательно подобрать именно точные номиналы резисторов: используйте для этого омметр или последовательно соединение резисторов для точного подрбора номиналов.

А вот схема подключения:

Вот, собственно, и все. Внутри архива с библиотекой есть инструкции и примеры, как все это дело программировать — там ничего сложного нет.

И, в заключении, вот фот от автора библиотеки, которые демонстрируют ее работу наглядно:

А вот товарищ с сайта Pole даже сделал порт консольной игрушки с помощью этой библиотеки.

Источник

Arduino.ru

Подключение Arduino к VGA монитору

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Давно бьюсь над применением Arduino для вывода текста на VGA монитор. Больше всего мне нравится решение отсюда: https://www.gammon.com.au/forum/?id=11608

Используются две платы Arduino, одна выводит изображение на монитор, вторая передаёт текст по интерфейсу I2C на первую. В статье по ссылке всё очень хорошо описано, только один нюанс: плату, выводящую на монитор, нужно прошивать в Arduino1.0, иначе будете долго мучиться, и безрезультатно. Вторую (передающую) плату можно прошивать в любой Arduino, никаких проблем.

В принципе, примеры из статьи работают нормально. Но в тестовом передающем скетче используется только полная очистка экрана и вывод текста с первой строки и далее. В описании автор заявляет о возможности перевода курсора (на самом деле курсора нет) в начало текущей строки, и в произвольную позицию на экране с координатами Х, У. Так вот это у меня не получается, хоть убей, а без этого полноценно использовать не выходит. Ведь текст можно только дописать вниз по экрану, или полностью очистить и написать по новой.

Думаю, не у всех есть желание и возможность попробовать подключение к монитору, но, возможно кто-то разгадает загадку по коду.

Вот код передающей платы:

Вот операторы, котрые не использованы в примере, должны работать, но не работают:

Вот код принимающей и выводящей на монитор платы, интересующая часть примерно с 150 строки по 265:

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

Источник

Подключение Arduino к VGA монитору. Ардуино проекты.

Рассмотрим подключение Arduino к VGA монитору. Схема подключения очень простая и содержит всего 3 резистора. Выводить можно не только основные RGB цвета, но и оттенки. Качество картинки на уровне игрушек 90 годов.

Как и обещал, показываю как подключить Arduino к VGA монитору. Это продолжение вот этого урока, где я подключал к монитору плату ESP 8266.
С подключением не должно возникнуть никаких проблем. Оно очень простое. Чуть больше резисторов чем в прошлом примере, а точнее на два. На схеме указано что резисторы идущие от вертикальной и горизонтальной синхронизации должны быть 68 Ом, но у меня таких не было, поэтому я поставил по 100 Ом.
Значение остальных резисторов тоже выше, это потому что напряжение в Ардуино 5 вольт, против 3.3 вольт у ESP.

Это небольшой отрывок примера из библиотеки с подключенной Ардуино NANO. Можно было бы подключить и UNO без разницы.
Как можно увидеть, что разрешение экрана совсем маленькое и поэтому всё смотрится не очень хорошо. Да чего я говорю. Смотрится очень плохо. Как будто откатились лет на 20.
В конце, для сравнения, я выведу на экран демо примеры с подключенными Ардуино NANO и Ардуино MEGA.
Качество при работе с Мега не на много лучше.

Вот посмотрите таблицу.

  • ESP — 512x480px
  • UNO — 192x80px
  • MEGA — 200x240px | 200x80px

Как видите, что если на ESP ещё можно думать о каком-то качестве, то с UNO или NANO без вариантов. К тому же только библиотека и небольшой пример съедает 95 процентов памяти. С Mega получше, но использовать мегу, для этого просто бессмысленно.
Так что если и использовать подключение к VGA монитору, то только с ESP или объединять несколько плат Ардуино. Одну для подключения к монитору, а другие для работы с датчиками.

Теперь давайте посмотрим как это всё собрать.

Вот картинки из документации к библиотеке. Здесь схемы подключения к Ардуино УНО и Ардуино Мега.
Все примеры из библиотеки работают с процессорами ATMega328 MCU (или выше) и не работает с ATTINY или ATMega168.
Как я уже говорил что разрешение можно получить с подключенной УНО 192x80px, а с MEGA 200x240px
Каждый пиксель может иметь всего 2 цвета.

Читайте также:  Длинное платье своими руками мастер класс

Вывести можно только 2 цвета чёрный и основной. Основной – это тот цвет который подключен к к контакту 1 TX. И он может быть красным, зелёным или синим.
Для дополнительный цветов надо подключить два дополнительных провода к контактам 6 и 7 в УНО или 30 и 31 в МЕГА.

Теперь скачиваем VGAXUA эту библиотеку. Скачать её можно с GitHub или с моего сайта. Ссылка будет в описании. Она работает с UNO и MEGA.

Теперь посмотрим как надо разделывать кабель. Цвета жил могут отличаться, поэтому надо обязательно прозванивать контакты. Основные провода отвечающие за RGB цвета более толстые и находятся в экране.
Все экраны надо соединить вместе и подключить к земле. Так же к земле надо подключить 5 и 10 контакт вилки кабеля.
У меня конечный результат получился вот такой.

Теперь загрузим скетч демо примера и выведем одновременно работающие Ардуино НАНО и МЕГА.
Это видео получилось небольшое, Так как это просто знакомство с новыми возможностями подключения Ардуино и вывод данных на VGA монитор.
Что я понял после тестирования подключений ESP и ARDUINO.
Ни один не другой пример в таком виде для дальнейшего использования не пригоден. Но я не потерял надежду на использование не традиционных вариантов вывода информации. На очереди вывод на телевизор. И я надеюсь, что там мне и вам конечно же, повезёт больше.
Что то я скатился на совсем коротенькие видео. Как вам такие коротыши?

Источник

VGA на Arduino

VGA это сокращение от Video Graphics Array, протокола отображения видео, который часто встречается в мире электроники. В VGA используется одна «частота следования пикселей» и установленная частота вывода видео данных горизонтально, строка за строкой, пока весь кадр не будет отображен, а потом всё начинается снова.

В прошлом я построил много проектов основанных на VGA, но никогда не использовал его с Arduino, поэтому в этом проекте мы будем использовать платформу Arduino UNO для имитации VGA сигнала при помощи непосредственно С кода. Это абсолютно не похоже на то, как это реализовано в видеокартах, но это интересная задача, чтобы увидеть, на сколько хорошо мы знаем и понимаем Arduino и AVR микроконтроллеры, а также VGA протокол. Работа устройства показана на видео.

Цель и обзор этого проекта

Целью данного проекта является использование Arduino UNO для вывода стандартного изображения с красным, зеленым и синим цветом на компьютерный VGA монитор. Кроме Arduino UNO я использовал небольшую плату с VGA разъемом, которую я сделал для своего предыдущего проекта «Видеокарта для мазохиста», чтобы легче подключать монитор.

Для того, чтобы вывести красный, зеленый и синий цвета на компьютерный VGA монитор, мы должны договориться о разрешении, которое мы будем пытаться имитировать. Например, 800×600 удобно, т.к. используются целые круглые числа, и частота следования пикселей составляет 40МГц. И можно имитировать VGA разрешение 800×600 и выводить 200 линий красного, 200 линий зеленого и 200 линий синего цветов. Поскольку Arduino UNO работает на частоте 16МГц, невозможно получить доступ к каждому пикселю, поэтому мы будем выводить целиком линии.

Элементы:
Arduino UNO
Плата с VGA разъемом
Перемычки (провода)
Компьютерный VGA монитор
Разъем для батареи +9В
Разъем для батарей

Подробный список элементов

Все элементы, используемые в этом проекте перечислены выше, но основные элементы описаны более подробно.

Arduino UNO
Arduino Uno это микроконтроллер, который делает всю работу в этом проекте, выполняет наш код и выдает VGA сигналы, соответствующие тому, что мы хотим вывести на монитор без особых проблем.

Плата с VGA разъемом
Эта плата изначально была сделана для моего проекта Видеокарта для мазохиста, чтобы легко подключать монитор, но я пишу всё больше и больше статьей на тему VGA, поэтому он чрезвычайно полезен.

Перемычки
Обычные перемычки. Мы будем использовать их для подключения Arduino к VGA монитор. Также можно использовать провода со штырьками или крокодильчиками.

Обзор схемы

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

Особенности схемы

RGB соединения
В VGA используется смешивание красного зеленого и синего цветов для получения всех цветов радуги. Параметры на каждом из этих контактов показывают монитору, насколько интенсивно должен гореть этот цвет. Мы не регулируем интенсивность цвета, поэтому у нас всегда для каждого из цветов 100% красного, 100% зеленого или 100% синего.

Читайте также:  Виды коллажей своими руками

Hsync и Vsync соединения
Для того чтобы знать, какая линия сейчас отображается и завершен ли кадр, используется два сигнала синхронизации: ​​горизонтальная синхронизация H-SYNC и вертикальная синхронизация V-SYNC. Это самые важные сигналы, и если их тайминги будут нарушены, то VGA выход не будет работать как надо.

GND соединения
В VGA разъеме есть много GND выводов для разработчиков, чтобы сделать профессиональный VGA контроллер. Но для того, что мы делаем, нужно всего лишь подключить GND к 5 контакту. Всё!

Основы теории VGA

В спецификации VGA описывается отображение цветовых данных, горизонтальной и вертикальной синхронизации, и об определенном времени на каждое действие, которое нельзя пропускать.
Arduino UNO тактируется кварцевым генератором 16МГц и одна инструкция выполняться за один цикл, что означает, что каждая инструкция в нашей программе будет выполняться точно за (1/16000000) секунды или примерно 62,5 наносекунды.

Так как каждая инструкция выполняется 62,5 наносекунды, и мы должны проводить синхронизацию в определенное время, важно, что каждое время с картинки выше делиться на 62,5 наносекунды, а это значит, что мы можем использовать инструкции с задержкой, чтобы получить идеальное время для синхронизации.

При использовании 800x600VGA, каждая строка заканчивается горизонтальным импульсом синхронизации, который сообщает монитору данные следующей строки. После синхронизации 601 линии, монитор ожидает импульс вертикальной синхронизации продолжительностью 4 линии. В этот момент есть пауза в 23 линии. Благодаря вертикальной синхронизации и задней площадки строчного гасящего импульса, линии отображаются, но информация о цвете не используется.

Аппаратная часть

Это наверно одна из самых простых собранных схем, о которых я писал. Берите Arduino UNO, перемычки и VGA разъем и начинайте сборку!

Сборка схемы
На фотографии вы можете видеть все детали, необходимые для сборки схемы, приведенной ранее. Сначала подключите GND к 5 контакту VGA разъема. Потом подключите контакты красного, зеленого и синего цветов. Наконец, соединения Hsync и Vsync выполнены, и монитор может понять, в каком разрешении и в какой момент вы хотите отобразить что то на нём. Я использую плату от своего предыдущего проекта. О её изготовлении можно узнать здесь.

Аппаратная часть готова. Давайте перейдем к программной части и посмотрим, как всё это реализовано.

Программная часть

Есть две основных части кода, которые вы увидите, объяснить и подробно описаны ниже:
— Цвет для циклов + Hsync
— Вертикальная синхронизация

3 цикла используются для создания трех различных цветов, которые отображаются на экране. Вот выдержка из кода для генерации 200 линий красного цвета. Время указано в комментариях, и вы можете легко увидеть соответствие.

В следующем отрывке кода видно, что вертикальная синхронизация выглядит почти так же, как вывод обычных горизонтальных линий. Разница в том, что вместо того, что бы считаться в пикселях, как Hsync (128 пикселей), вертикальная синхронизация считается в линиях (4 линии).

Это основная часть кода, но его больше, и вы можете ознакомиться с ним, скачав исходник. Мы написали программу, собрали аппаратную часть, и теперь пришло время проверить устройство и посмотреть на его работу!

Результат работы и примечания

На видео показан вывод VGA сигнала с Arduino UNO на компьютерный VGA монитор. Никаких уловок и трюков, просто работа программы, и сигналы синхронизации.

Красный, зеленый и синий цвета появляются на мониторе сразу после включения питания без искажений. Надеюсь, этого достаточно, чтобы убедить вас, что эта система действительно работает, и мы выводим VGA 800×600 @ 60 Гц.

Обзор VGA на основе Arduino

Как вы уже поняли, VGA довольно трудно выводить при помощи Arduino в разрешении 800×600, а получение полноценной картинки используя только Arduino в принципе невозможно, но мы используем гибкость VGA в нашу пользу и выводим упрощенные вещи. На экран выводятся красный, зеленый и синий цвета, доказывая, что мы можем выводить упрощенный VGA.

Что теперь делать?
Я не рекомендовал бы тратить слишком много времени на вывод VGA сигналов при помощи Arduino, так как это получается намного сложнее из-за требований к таймингам. В конечном счете вы, вероятно, разочаруетесь в этом методе. Есть много VGA контроллеров, с которыми Arduino может взаимодействовать, что сильно упрощает вывод вещей на VGA монитор. Я уверен, что есть Arduino shield, дающий такую возможность.

Заключение
Если мы перечитаем цели данной статьи, то мы поймем, что у нас всё получилось. Три цвета на экране, как и ожидалось. Программа была довольно сложной, но реализуемой. Однако, динамический VGA выход намного интереснее.

Источник

Оцените статью