Zx uno vga 2m vga настройка

Обновлено: 06.07.2024


Сама по себе, идея использовать 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.

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 клавиатуру.

2. Подключаем PS/2 клавиатуру к основному Arduino

Информация и библиотека были взяты из этого материала.

По существу, вам нужно соединить следующие четыре контакта:
Data клавиатуры к Arduino pin 8,
IRQ (clock) клавиатуры к Arduino pin 3;
а также подключить землю (GND) и питание +5V, соответственно.

Я использовал PS/2 разъём cо старой нерабочей материнской платы, его можно легко сдуть с помощью фена.

Распиновка 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 это сокращение от Video Graphics Array, протокола отображения видео, который часто встречается в мире электроники. В VGA используется одна "частота следования пикселей" и установленная частота вывода видео данных горизонтально, строка за строкой, пока весь кадр не будет отображен, а потом всё начинается снова.

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

VGA на Arduino

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

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

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

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

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

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

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

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

Плата с VGA разъемом

Перемычки
Обычные перемычки. Мы будем использовать их для подключения Arduino к 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 наносекунды.

VGA 800х600

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

VGA 800х600

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

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

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

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

Сборка схемы

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

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

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

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

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

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

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

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

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

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

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

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

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

Вариантов, как подключить 2 монитора к одному компьютеру, всего три. Воспользоваться ими может практически любой пользователь, независимо от опыта применения компьютерной техники. Хотя для самых эффективных вариантов придётся совершить определённые затраты. И, в любом случае, провести настройку системы и режима отображения данных.

Необходимость в двух мониторах

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

Для дизайнера, конструктора и фотохудожника увеличенная рабочая зона означает большую детализацию объектов.

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


Рис.1. Два монитора для работы.

Ещё одна достаточно часто встречающаяся возможность применения двух экранов – игровые приложения. С их помощью обеспечивается лучший обзор по сторонам. А для владельцев ноутбука дополнительный широкий экран (в качестве которого можно использовать даже плазменный телевизор) позволяет получить намного больше удовольствия от игры.


Рис.2. Использование двух мониторов для игры.

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

Этапы подключения

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

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

Способов физического подключения 2 мониторов всего три:

  1. С помощью видеокарты, имеющей несколько выходов (рис.3). Если компьютер приобретали для работы с графикой, а видеоплата достаточно современная и мощная, на ней уже может быть установлено несколько разъёмов – например, 2 HDMI или 1 VGA и 1 HDM. Если вход всего один, возможно, придется приобрести новую видеокарту;


Рис.3. Видеокарта с 2 входами HDMI.

2. Установка дополнительной видеокарты во второй слот материнской платы. Такой вариант подойдёт при наличии на компьютере старого графического процессора, и отсутствии возможности покупки дорой новой платы с 2 входами;


Рис.4. Установка дополнительных видеокарт.

3. Использование специального разветвителя (сплиттера). Такой способ самый недорогой и подойдёт для любого компьютера, однако может привести к снижению допустимых частот у мониторов. Качество изображения уменьшится, что будет особенно заметно при запуске на экранах видео FullHD. Для работы со статическими картинками использование сплиттера вполне допустимо.

Рис.5. Сплиттеры для подключения 2 мониторов.

Совместимость шнуров и входов. Порты

Для подсоединения мониторов к компьютерам обязательно требуется кабель для совмещения их разъёмов. Для двух дисплеев потребуется столько же кабелей подходящего типа.

Разъёмы могут быть следующими:

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

Рис.6. С помощью VGA-разъёма второй монитор можно подключить даже ноутбуку.

DVI. Более современный интерфейс, обеспечивающий поддержку аналогового и цифрового сигнала;


Рис.7. Интерфейс DVI.

HDMI. Разъём подходит для подключения компьютера к устройствам с чётким цифровым сигналам – например, к телевизорам и плазменным панелям. Нередко встречается не только на ПК, ноутбуках и телеприёмниках, но даже на планшетах (в виде miniHDMI);


Рис.8. HDMI на планшете и стационарном компьютере.

DisplayPort (mini DisplayPort). Интерфейс, имеющий ряд преимуществ по сравнению даже с HDMI. Встречается не слишком часто, однако позволяет подключать несколько экранов с большим разрешением (до 4К);


Рис.9. Переходник с DisplayPort на стандартный VGA,

USB. Стандартный порт, встречающийся на компьютерах уже больше 15 лет. Не слишком подходит для передачи качественного изображения и нечасто встречается у мониторов. Однако решает проблему совместимости, например, для ноутбука или нетбука с отсутствующими разъёмами для видео другого типа.
В основном, подключить кабель неправильно просто невозможно из-за большого количества различий в штекерах.

Единственная проблема, которая может при этом возникнуть – отсутствие подходящих переходников. И всё, что вам понадобится – найти и купить подходящие детали. Для ноутбуков с разъёмом для монитора задача упрощается ещё больше.

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


Рис.10. WiFi-удлинитель с разъёмом HDMI.

Настройка мониторов

После того как к компьютеру были подключены 2 монитора, операционная система обычно быстро обнаруживает и самостоятельно настраивает оба.

И на каждом экране можно увидеть одно и то же изображение, что может быть удобно при передаче одинаковой информации группе пользователей.

Чаще всего так происходит из-за плохого сигнала (особенно, если используются разветвители на 2 монитора). Ещё одна причина – отсутствие подходящих настроек операционной системы.

Для исправления неполадки следует совершить следующие действия:

  • Открыть вкладку «Экран» – через меню «Пуск» (для W7 и выше) или через вкладку параметров в окне свойств рабочего стола (для W XP);
  • Выбрать «Настройки разрешения экрана».


Рис.11. Переход к настройкам второго монитора в Windows 7.

Если оба экрана подключены, настроены и работают нормально, вы увидите два изображения с номерами. Здесь же можно настроить разрешение каждого дисплея и даже его ориентацию (например, повернув его набок и работая с изображением в портретном формате).

При затемнении одного из экранов следует нажать кнопку Найти / Find. Если монитор был подключён правильно, система через некоторое время настроит его и даст возможность вывода информации.

Теперь можно нажать одновременно клавиши Win и P, после чего на экране можно будет увидеть панель настройки.


Рис.12. Панель настройки изображения на 2 экранах.

Выбирая пункт «Дублировать», вы получаете на каждом дисплее одинаковое изображение. При выборе «Расширить» картинка увеличится на столько мониторов, сколько подключено к компьютеру. Их может быть не только два, но и три или даже 9.

У ноутбуков для более удобного подключения и настройки дополнительного дисплея иногда присутствует специальная кнопка.


Рис.13. Кнопка на ноутбуке для работы с подключенным экраном.

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

Рис.14. Один из вариантов расширения рабочего стола с ноутбука на монитор.

Два рабочих стола

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

Реализовать такую возможность средствами своего компьютера практически невозможно. Для этого понадобится приобретать профессиональную (или дополнительную вторую, которая может быть обычной) видеокарту и организовать несколько независимых потоков информации.
Упросить задачу поможет специальный прибор, задача которого – подключение двух мониторов к одному компьютеру и организация двух рабочих процессов. Устройство под названием Matrox DualHead2Go позволит работать с 2 дисплеями, даже имея маломощный графический процессор и аналоговый выход.

Кроме подключения самого адаптера, для его работы понадобится установка идущих к нему в комплекте драйверов.


Рис.15. Устройство Matrox DualHead2Go.

При необходимости с помощью Matrox DualHead2Go можно подключить два монитора даже к ноутбуку. Таким образом, мобильный компьютер получит сразу 3 дисплея, на 2 из которых будет показываться одна информация, а на третьем – другая.

Использование планшета

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

Для этого потребуется установка одного из двух приложений:

  • ScreenSlider, работающая с Android;
  • iDisplay для работы и с Android, и с iOS.

Каждая программа имеет две части – для компьютера и планшета. При этом на ПК может быть установлена и Windows, и MacOS. Первая часть добавит в систему новый виртуальный монитор, вторая начнёт работу на планшете только после того, как будет введён IP компьютера.

С помощью обоих приложений можно растягивать изображение на несколько мониторов или дублировать картинку. Они же помогут установить ориентацию экранов.

Выводы

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





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

В статье Текстовый VGA-модуль для микроконтроллеров я рассказывал о доработанном варианте терминала 64х30 символов. 15 цветов. Всё хорошо, сделал плату, допилил софт под себя, но текст это текст. Только символы и только 8х16. Можно конечно рисовать псевдографикой. Таблички выходят на ура. Я даже написал колхозную функцию увеличения цифр. Работает достаточно шустро:

И что-то можно изобразить похожее на интерфейс

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


выкинуть всё не нужное и заменить на своё. Как собственно это сделано с логотипом Microchip. (Символы с кодами с 0x80 по 0x98, выстроенные в 5 рядов по 5 символов, образуют графическое изображение логотипа Microchip.) Ну то есть взять и выкинуть например английский алфавит. Или русский. Или всякие стрелочки и параграфы с тильдами и стрелочками. Получаем кучу символов, которые можно перерисовать и сделать части окружностей, дуг, диагональные линии и.т.д. Потом наколбасить библиотеку, которая будет рисовать кривые этой псевдографикой. Но что-то это сильно пахнет адским геморроем и я начал искать варианты с графикой.





// отображение пикселя
case WORK_PUT_PIXEL:
break;

В итоге функция рисования линии по двум точкам стала одной функцией а не тремя. (Хотя я понимаю, это было для быстродействия). Мой код в этом нисколько не проиграл. Функцию рисования окружностей сделал по алгоритму Брезенхэма. У Этого дядьки окружности более округлые. Переписал все команды по-своему, а их там 31. Сделал рисование не только белым, но и черным. Задаваемую толщину линий. Закраску прямоугольников и окружностей. Встроил второй громадный шрифт. Запилил пропорциональное увеличение шрифта 8*16 на заданную величину множителя. Убил весь обратный вывод в UART. Не нужно ничего отвечать на команды. Просто рисуй быстрее. Одно подтверждение обработки команды тормозит вывод графики в десятки раз. Естественно добавил кольцевой буфер на 1024 байта. Конечно UART в этом смысле достаточно убогий по скорости интерфейс, но зато более универсальный. Во-первых, в микроконтроллере их может быть несколько, а во-вторых, можно и в ПК воткнуть. I2C интерфейс убил по-этой же причине. Да и в скорости он не сильно выигрывает, особенно софтварный.


Далее пошли первые тесты. (фотографировал на тапок)


Округлые окружности


Прямоугольнички

А дальше пошел писать библиотеку для ардуино. В этом плане всё проще. Берем стандартный класс SoftwareSerial и наследуемся от него, добавляя свои функции.

Можно конечно юзать и HardwareSerial, но их в ардуине гораздо меньше чем SoftwareSerial 🙂 Cофтовый UART спокойно работает на 115200 и в arduino nano (Atmega328) и в arduino pro micro (Atmega32u).

class VgaSoftwareSerial : public SoftwareSerial <
public:
VgaSoftwareSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false);

void cls(void);
void pixel(int x1, int y1, uint8_t color);
void setcolor(uint8_t color);
void setcursor(uint8_t x1, uint8_t y1);
void line(int x1, int y1, int x2, int y2, uint8_t color);
void rectangle(int x1, int y1, int x2, int y2, uint8_t color, uint8_t filling);
void circle(int x1, int y1, uint8_t color, uint8_t radius, uint8_t filling);
int version(void);

Собственно всё рисование сводится к последовательной подаче байт в UART.

void VgaSoftwareSerial::pixel(int x1, int y1, uint8_t color)
<
uint8_t buf[] = x1, // значение X1 Lo
0x10, // команда установки X1 Hi
x1 >> 8, // значение X1 Hi
0x13, // команда установки Y1 Lo
y1, // значение Y1 Lo
0x12, // команда установки Y1 Hi
y1 >> 8, // значение Y1 Hi
0x03, // команда установки цвета пикселя
color, // значение цвета пикселя
0x0A // команда рисования пикселя
>;
VgaSoftwareSerial::write(buf, 11);
>

А так рисуется линия:

В самом скетче всё еще проще:

И на обоих мониторах рисуется точка по центру.

Обкатанные платы были заново отрисованы в DipTrace и отправлены на завод.

Изменилась схема питания. Применен прекраснейший DC-DC преобразователь LM3671MF. Платы стали еще меньше.



И это, на минуточку, PIC32. Расту над собой 🙂


Такими же нехитрыми командами был наколбашен тест всего что есть в модуле.

В дальнейшем использовал сей девайс для отрисовки приборной панели для второй версии автомобильчика.

Ну и 3D до кучи:

Данный VGA-модуль доступен в 4х вариантах исполнения и вы можете его приобрести в соответствующем разделе.

Буду рад вопросам и комментариям. Еще больше буду рад рационализаторским предложениям.

Читайте также: