Arduino и внешний монитор.

Все мы знаем, что на платах Arduino установлен микропроцессор семейства ATmega. Вполне себе так полноценный микропроцессор, ничуть не хуже тех, что были в первых персональных компьютерах. Так почему мы не можем его присоединить к монитору?

Ну почему же не можем? Вполне себе можем!

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

В случае с внешними LCD-экранами ситуация обстоит довольно таки просто. Там есть свой контроллер дисплея, который и отвечает за формирование и хранение изображения. Задача Arduino, объяснить на понятном ему языке, что нужно нарисовать и показать.

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

Для начала воспользуемся уже готовой библиотекой TVOUT. И соберем на базе Prototype Shield нужное нам устройство.

Вместе с Arduino UNO выглядит вроде не плохо.

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

Думал прикрепить видео, но стало лень его обрезать и обрабатывать. Arduino вполне хватает ресурсов динамично крутить на экране объемную (типа 3D) модель каркасного кубика. Выглядит это симпатично.

В реальности мы имеем монохромную картинку с разрешением 128 х 96 пикселей. Не так уж и много, но оно работает.

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

Тут нам вполне сможет помочь библиотека VGAX. Особенно было интересно почитать, как автор создавал эту библиотеку.

Но мы начнем сразу с создания на базе моего любимого Prototype Shield, с добавлением разъема и четырех резисторов, нового VGA Shield.

Бутерброд с Arduino UNO смотрится вполне достойно.

В результате мы получаем на мониторе картинку с разрешением 120 х 60 пикселей и отображением палитры в 4 цвета. Причем выбор палитры зависит от того, к каким из контактов RGB вы подключите управляющие выводы микроконтроллера.

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

Формально, Arduino может работать с VGA сигналом, вплоть до разрешения до 800 х 600 (вот здесь описание и эксперименты) и даже можно формировать определенное цветное изображения в этом разрешении. Но давайте попробуем разобраться по подробнее.

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

Для черно-белого изображения 128 х 96 пикселей нам необходимо 128 х 96 = 12 288 бит = 1 536 байт.

Для цветного изображения (4 цвета, это 2 бита на пиксель) 120 х 60 пикселей нам необходимо 120 х 60 х 2 = 14 400 бит = 1 800 байт.

Теперь давайте вернемся к началу статьи и посмотрим, сколько оперативной памяти имеется в распоряжении нашего микропроцессора — 2048 байт.

В отличии от первых микропроцессоров, у нас нет возможности установить внешние микросхемы памяти, тем самым увеличив размер ОЗУ. Поэтому, опираясь на ресурсы нашего микропроцессора, мы можем получить изображения лишь такого не высокого качества.

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

Но это еще не все, про вывод информации с Arduino на монитор.

Продолжение следует…