Необходимо вывести на экран телевизора картинку формата *.bmp.
С библиотекой TV-out для ардуино уже работал. Выводил текст и геометрические фигуры. Но картинки из файла выводить не доводилось. Немного погуглил и нашел полуавтоматическое решение.
В моем случае это *.bmp файл размером 78х71 пикселей. Открыл исходный файл в photoshop переключил режим, вначале, "градации серого", и после, "битовый формат". На прямую не переключается.
Уменьшил размер до 78х71 пикселей.
Сохранил в *.bmp
Открываю программу, перетаскиваю в нее файл с картинкой. Выбираю третий вариант чтения файла. По умолчанию галочка "Invert Image", и по умолчанию "C Array Writer":
После этого нажимаю "Convert" и получаю текстовый файл с набором цифр, которые и есть картинка пригодная для библиотеки Tvout. Часть цифр вырезал.
Создаем еще один файл TVOlogo.cpp. Этот файл также сохраняем в директорию со скетчем *.ino. В этот файл пишем текст:
Первые две цифры это размер исходной картинки. Его меняем в зависимости от размера вашей картинки. В моем случае это 78, 71.
В коде программы, когда нужно вывести эту картинку на экран пишем:
С библиотекой TV-out для ардуино уже работал. Выводил текст и геометрические фигуры. Но картинки из файла выводить не доводилось. Немного погуглил и нашел полуавтоматическое решение.
Для начала нужна картинка
В моем случае это *.bmp файл размером 78х71 пикселей. Открыл исходный файл в photoshop переключил режим, вначале, "градации серого", и после, "битовый формат". На прямую не переключается.
Уменьшил размер до 78х71 пикселей.
Сохранил в *.bmp
Перевод картинки в формат понятный библиотеке
Для этого необходимо скачать программу Image2Code (зеркало у меня на гуглдрайве).Открываю программу, перетаскиваю в нее файл с картинкой. Выбираю третий вариант чтения файла. По умолчанию галочка "Invert Image", и по умолчанию "C Array Writer":
После этого нажимаю "Convert" и получаю текстовый файл с набором цифр, которые и есть картинка пригодная для библиотеки Tvout. Часть цифр вырезал.
Из текста удаляю фигурные скобки, они нам не нужны. И в итоге получается массив чисел записаных через запятую.
Используем с библиотекой
создаем файл TVOlogo.h. Ложим файл в директорию с файлом скетча *.ino. В файл записываем следующее:
# include <avr/pgmspace.h> # ifndef TVOLOGO_H # define TVOLOGO_H extern const unsigned char TVOlogo[]; #endif
Создаем еще один файл TVOlogo.cpp. Этот файл также сохраняем в директорию со скетчем *.ino. В этот файл пишем текст:
#include "TVOlogo.h" PROGMEM const unsigned char TVOlogo[] = { 96,32, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00, 0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0, 0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x38, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x04, 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x02, 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x80,0x02, 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x02, 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xC2, 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x42, 0x4F,0xFF,0x60,0x18,0x00,0x00,0x00,0x00,0x17,0xFF,0xFF,0x42, 0x4F,0xFF,0x60,0x18,0x00,0x00,0x00,0x30,0x14,0x00,0x01,0x42, 0x40,0x60,0x60,0x18,0x00,0x00,0x00,0x30,0x14,0x70,0x71,0x42, 0x40,0x60,0x30,0x30,0x00,0x00,0x00,0x30,0x14,0x88,0x89,0x42, 0x40,0x60,0x30,0x30,0x3E,0x06,0x0C,0xFE,0x15,0x05,0x25,0x42, 0x40,0x60,0x30,0x60,0xFF,0x86,0x0C,0xFE,0x15,0x72,0x75,0x42, 0x40,0x60,0x18,0x60,0xC1,0x86,0x0C,0x30,0x15,0x05,0x25,0x42, 0x40,0x60,0x18,0x61,0x80,0xC6,0x0C,0x30,0x14,0x88,0x89,0x42, 0x40,0x60,0x18,0xC1,0x80,0xC6,0x0C,0x30,0x14,0x70,0x71,0x42, 0x40,0x60,0x0C,0xC1,0x80,0xC6,0x0C,0x30,0x14,0x00,0x01,0x42, 0x40,0x60,0x0C,0xC1,0x80,0xC6,0x0C,0x30,0x17,0xFF,0xFF,0x42, 0x40,0x60,0x0F,0x81,0x80,0xC6,0x0C,0x30,0x10,0x00,0x00,0x42, 0x40,0x60,0x07,0x80,0xC1,0x87,0x1C,0x30,0x15,0x40,0x15,0x42, 0x40,0x60,0x07,0x80,0xFF,0x83,0xFC,0x3E,0x12,0x8A,0x8A,0x42, 0x40,0x60,0x03,0x00,0x3E,0x01,0xEC,0x1E,0x15,0x40,0x15,0x42, 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x42, 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xC2, 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04, 0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38, 0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0, 0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };Только вместо имеющегося массива цифр вставляем полученный ранее массив.
Первые две цифры это размер исходной картинки. Его меняем в зависимости от размера вашей картинки. В моем случае это 78, 71.
Выводим изображение на экран
Вначале скетча подключаем файл TVOlogo.h.
#include "TVOlogo1.h"
В коде программы, когда нужно вывести эту картинку на экран пишем:
TV.bitmap(0,0,TVOlogo);
Здесь 0,0 это координаты верхнего левого угла картинки относительно начала координат экрана. TVOlogo - то что выводим.
Отлично! Огромное спасибо за публикацию, реально всё работает.
ВідповістиВидалитиne rabotaet
ВідповістиВидалити