Обычно для получения от Arduino видеосигнала применяют либо внешнее аппаратное устройство TellyMate, либо библиотеку arduino-tvout. Во втором случае дополнительный микроконтроллер становится не нужен, но разрешающая способность изображения мала. Набор библиотек MRETV, о котором рассказывает автор Instructables под ником Mr. E, сочетает преимущества обоих способов: микроконтроллер один, как во втором случае, а разрешение - такое же, как в первом. Но и это ещё не всё: одновременно с решением в фоне каких-либо задач можно выводить не только изображение, но и стереозвук, а также работать с устройствами ввода.
Конечно, от Arduino или совместимой с ним платы для одновременной реализации всего этого требуется довольно много ресурсов. Поэтому набор библиотек работает только с платами на микроконтроллерах ATmega168, 328 и 2560. О работе, скажем, на платах с микроконтроллерами ATmega8 или ATtiny85 (например, Digispark) речь не идёт.
Для подключения внешних устройств мастер собирает несложные схемы на резисторах, диодах и конденсаторах. Начинает он со схемы для снятия видеосигнала. Это простейший микшер, смешивающий сигналы яркости и синхронизации в определенной пропорции. Схемы для различных видов плат отличаются только номерами выводов для снятия этих сигналов.
Мастер собирает эту схему в вариантах для "тюльпана" и S-Video. Во втором случае вход для сигнала цветности по понятной причине не задействуется.
Чтобы проверить видеовыход в действии, мастер устанавливает библиотеки (архивы с ними и примерами лежат здесь, более новая версия - здесь) в Arduino IDE вручную, автоматическая установка не подойдёт. Для этого он закрывает все окна, относящиеся к IDE, после чего помещает библиотеки из архива в папку libraries этой среды программирования, а примеры - в её же папку Examples. И для начала запускает такой скетч:
#include "MRETV.h"
#include "textfont.h"
char mystring[]="Hello world";
void setup(){
Screen.begin(textfont,mystring,2*fontheight,6,30,30,1);
}
void loop() {}
Убедившись, что фраза "Hello world" на телевизор выводится, мастер экспериментирует с примерами:
SimpleDisplay.ino - интерфейс ввода-вывода к существующим проектам
TVText.ino - Arduino в качестве внешней видеокарты
TestPattern.ino - испытательная таблица
Bounce.ino - работа с движущимися и растровыми изображениями
Наступает очередь выхода стереозвука. Здесь смешивать сигналы не требуется, но если подключать динамические головки или наушники не непосредственно, а через усилитель, не обойтись без ФНЧ. И снова - схема в двух вариантах, в зависимости от того, на каком микроконтроллере выполнена плата:

Это устройство мастер тоже собирает:
И пробует примеры:
Arudion.ino - секвенсер
ScreenTool.ino - многофункциональная утилита, требует клавиатуры (см. далее) или эмулятора терминала на ПК
Ponguino.ino - клон Pong, со звуком, требует клавиатуры (также см. далее).
Следующая задача - подключить клавиатуру или мышь (но не то и другое одновременно) устаревшего стандарта PS/2. Их осталось ещё довольно много.
С этим мастер тоже справляется:
Примеры - в основном те же самые, но новая периферия открывает и новые возможности:
TVText.ino - теперь терминал позволяет не только выводить информацию, но и вводить её
ShootEmUp.ino - игра, управление клавишами со стрелками, только ATmega328 и 2560
Ponguino.ino - теперь можно и сыграть: нажать j, затем управлять клавишами WASD, потом, когда придёт пора подключать датчики, можно будет изготовить аналоговые контроллеры
KeyboardTool.ino - развитие утилита ScreenTool
Bounce.ino - подключив клавиатуру, можно попробовать больше эффектов
Arudion.ino - с клавиатурой можно попробовать больше функций, а также сыграть самому как на синтезаторе
Всё это замечательно, но после примеров хочется попробовать пользоваться функциями MRETV и в своих программах. Мастер рекомендует пользоваться не монитором последовательного порта Arduino IDE, а эмулятором терминала с более развитым набором функций. Далее показано, как обращаться к функциям библиотек из своих программ. Можно пользоваться всеми упомянутыми выше интерфейсами одновременно, по одному или в любых сочетаниях.
Работа с видеовыходом:
Мастер пробует подключать к Arduino различные аналоговые датчики, также поддерживаемые MRETV. Например, переменный резистор, термистор, делитель для измерения напряжения, датчик влажности, диод в качестве термодатчика, фоторезистор:
Датчики должны быть такими, чтобы напряжение на входе попадало в диапазон от 0 до +1 В, при этом достигается наилучшая точность измерения. Примеры:
Ponguino.ino - теперь можно сыграть и аналоговым контроллером
KeyboardTool.ino - см. функцию считывания с аналоговых входов
Из шлейфа жёсткого диска с интерфейсом IDE мастер изготавливает "сенсорбаторий" - переходник для удобного подключения аналоговых датчиков:
Примеры для работы с ним:
KeyboardTool.ino - пользоваться так же, как при подключении датчиков без "сенсорбатория"
DiodeCalibration.ino - автоматическая калибровка при применении диодов в качестве точных термодатчиков
Порядок калибровки:
1. Подключить термистор к A0, резистор на 10 кОм к C0
2. Сделать делитель напряжения: резистор на 2 кОм ровно (можно из двух резисторов на 1 кОм) к A1, резистор на 10 кОм к C1
3. Подключить от одного до четырёх диодов в качестве датчиков температуры к A2 - A5, резисторы на 10 кОм к C2 - C5.
Теперь можно приступать к калибровке.
Файл MRETV.S написан на ассемблере, он будет компилироваться только при нахождении в папке для библиотек. Файл MRETV.extensions необходим для принятия решений о том, какие расширения задействовать при компиляции.
Приложение.
MRETV использует для генерации видео последовательный выход, при этом на монитор последовательного порта может поступать поток случайных данных. Переключатель позволяет выбирать между аппаратной и программной передачей данных. Во втором случае одновременно с генерацией видео реализуется полный дуплекс.
Название набора библиотек происходит от ника разработчика Mr. E, а также одновременно означает Master Raster (Extended) Transmission Vision.
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Устройство для запуска робота-пылесоса по расписанию
