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

Игровая ТВ-приставка на Arduino. Часть 1

Игровая ТВ-приставка на Arduino. Часть 1

Как использовать плату Arduino для вывода какой-либо информации  на ТВ?  Оказывается есть такая библиотека TVOut ( статья на сайте >> ), которая позволяет выводить информацию на ТВ по НЧ-кабелю (тюльпан). Правда изображение будет черно-белым, однако  этого будет достаточно для большинства проектов.  

Вот игровая консоль, где используется данная библиотека

Сайт проекта http://nootropicdesign.com/hackvision/index.html

Цена платы $43.95.

 

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

Вот вид нашей приставки

И схема

Ознакомимся с возможностями библиотеки и напишем игру.

Страница библиотеки – http://code.google.com/p/arduino-tvout

Здесь можно скачать библиотеку и посмотреть описание функций.

Библиотека использует следующие выводы Arduino

Плата    SYNC   VIDEO   AUDIO Decimilia, Uno, Nano   9   7   11 Mega   11   A7(D29)   10

Рассмотрим основные функции библиотеки.

Функции установки режима

Функция begin() инициализирует вывод видеосигнала (разрешение экрана по умолчанию 128×96)

Синтаксис:

Параметры:

Возвращаемое значение:

Функции задержки

Функция delay() осуществляет задержку выведенного изображения.

Синтаксис:

Параметры:

Функция delay_frame() осуществляет задержку выведенного изображения.

Синтаксис:

Параметры:

Функция полезна для сведения к минимуму или устранения на мерцание экрана, вызванные обновлением экрана.

Функции получения параметров

Функция hres() возвращает горизонтальное разрешение экрана.

Синтаксис:

Параметры:

Возвращаемое значение:

Функция vres() возвращает вертикальное разрешение экрана.

Синтаксис:

Параметры:

Возвращаемое значение:

Функция char_line() возвращает максимально возможное количество символов в одной строке при выводе текстовой информации.

Синтаксис:

Параметры:

Возвращаемое значение:

Основные графические функции

Функция set_pixel() устанавливает цвет пикселя экрана в точке с заданными координатами.

Синтаксис:

Параметры:

Функция get_pixel() получает цвет пикселя экрана из точки с заданными координатами.

Синтаксис:

Параметры:

Возвращаемое значение:

Функция fill() заполняет  экран заданным цветом.

Синтаксис:

Параметры:

Функция clear_screen() очищает  экран, заполняя заданным цветом.

Синтаксис:

Параметры:

Функция invert() инвертирует содержимое экрана.

Синтаксис:

Параметры:

Функция shift_direction() сдвигает содержимое экрана.

Синтаксис:

Параметры:

Функция draw_line() соединяет на экране линией две точки.

Синтаксис:

Параметры:

Функция draw_row() заполняет строку указанным цветом между двумя точками строки.

Синтаксис:

Параметры:

Функция draw_column() заполняет строку указанным цветом между двумя точками столбца.

Синтаксис:

Параметры:

Функция draw_rect() рисует на экране прямоугольник.

Синтаксис:

Параметры:

Функция draw_circle() рисует на экране круг.

Синтаксис:

Параметры:

Функция bitmap() выводит на экран растровое изображение.

Синтаксис:

Параметры:

Ниже рассмотрим процесс создания кода выводимых растровых изображений.

Функции вывода текстовой информации

Для применения функций вывода текстовой информации требуетя подключение файлов с включенными в библиотеку или пользовательскими шрифтами. Для подключения пользовательского набора шрифтов необходимо в скетче подключить заголовочный файл:

#include

В состав библиотеки включены следующие наборы шрифтов:

Функция select_font() выбирает шрифт для вывода текстовой информации.

Синтаксис:

Параметры:

Функция print_char() выводит символ на экран.

Синтаксис:

Параметры:

Функция set_cursor() устанавливает позицию курсора для вывода текстовой информации на экран.

Синтаксис:

Параметры:

Функция print() выводит на экран строку, символ или число.

Синтаксис:

Параметры:

Функция println() выводит на экран строку, символ или число и в конце символ перевода строки:

Синтаксис:

Параметры:

 

Функции вывода  аудио

Функции вывода звука позволяют отправлять на телевизор через аудиовыход сигнал определенной частоты.

Функция tone() выдает аудиосигнал определенной частоты.

Синтаксис:

Параметры:

Функция noTone() прекращает выдачу аудиосигнала.

Синтаксис:

 

Создание собственных шрифтов

Рассмотрим процесс создания пользовательских шрифтов для библиотеки TVOut.

Библиотека позволяет создавать собственные шрифты.

Существуют два вида шрифтов – фиксированной и переменной ширины. Для шрифтов фиксированной ширины первые три байта массива  содержат данные о ширине символа (4), высоте символа (6) и первый печатный символ (32) . Затем идут данные для каждого последующего символа.

#include “myfont1.h” PROGMEM const unsigned char myfont1[] = { 4,6,32, // 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // 0b01000000, 0b01000000, 0b01000000, 0b00000000, 0b01000000, 0b00000000, … … };

Для шрифтов переменной ширины в описании каждого символа первый байт определяет ширину данного символа.

#include “myfont1.h” PROGMEM const unsigned char myfont1[] = { 4,6,32, // 2, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // 3, 0b01000000, 0b01000000, 0b01000000, 0b00000000, 0b01000000, 0b00000000, … … };

Создадим пользовательский шрифт myfont1. Для пользовательского шрифта myfont1 в папке TVOutfonts создаем 2 файла: myfont1.h и myfont1.cpp.

Вот содержимое файла myfont1.h

 

#ifndef MYFONT1_h #define MYFONT1_h #include extern const unsigned char myfont1[]; #endif

 

Теперь для использования библиотекой TVOut нашего пользовательского шрифта myfont1 в скетче необходимо подключить файл

#include “myfont1.h”

Создание графических примитивов.

Библиотека TVOut позволяет загружать на экран растровые изображения. Рассмотрим создание кода для загрузки растрового изображения функцией bitmap() библиотеки TVOut.

Сначала необходимо создать 1 битное (двухцветное изображение), например в графическом редакторе Paint.

Затем нам понадобится программа Image2Code, которая сконвертирует из нашего изображения код. Программу можно скачать по адресу http://sourceforge.net/projects/image2code/files/. Это версия для операционной системы Windows. Скачиваем, запускаем.

 

Нажимаем на кнопку Convert и получаем массив.

Далее создаем 2 файла. Первый c расширением .h, например MyBitmap1.h.

 

# include # ifndef MYBITMAP1_H # define MYBITMAP1_H extern const unsigned char MyBitmap1[]; #endif

Далее создаем файл MyBitmap1.cpp , в него (в поле данных массива unsigned char MyBitmap1[]) копируем данные конвертации, убирая символы “{” и  “}”, и  вставляя в начале ширину и высоту изображения в пикселах.

#include ” MyBitmap1.h” PROGMEM const unsigned char MyBitmap1[] = { 16,16, 0x73,0x8E, 0x8C,0x71, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x97,0x63, 0x94,0x55, 0xB4,0x55, 0xD4,0x67, 0x94,0x45, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xAA,0xAA, 0x55,0x55, 0x00,0x00 };

Сохраняем файлы MyBitmap1.h и myBitmap.cpp в директории нашего скетча. Для вывода нашего изображения на экран телевизора вызываем функцию TVOut.bitmap():

#include ” MyBitmap1.h” TVOut.bitmap(x,y,MyBitmap);

C библиотекой ознакомились, собрана игровую консоль – теперь можно приступать к написанию игры.


Категория: Arduino
Метки:

Написать коментарий

*
= 4 + 9

Добавить изображение

Последние статьи