Один существующий пульт для всех аудиоустройств (с изображениями) | 2020
Один существующий пульт для всех аудиоустройств (с изображениями) | 2020
Table of Contents:
- Расходные материалы:
- Шаг 1: Запустите проект на макете
- Шаг 2: Создайте печатную плату и соберите коробку
Использование пульта аудио ресивера / усилителя для управления несколькими устройствами …
Это инструкция по созданию проекта Aduino для управления всеми необходимыми устройствами, такими как Apple TV, ТВ-приставка и ресивер Pioneer, только с одного пульта дистанционного управления. В данном случае это пульт от ресивера Pioneer.
Потому что я ненавижу использовать три разных пульта и нажимать несколько кнопок для переключения между просмотром ТВ, Spotify, CD и радио.
Arduino имеет инфракрасный (ИК) приемник и получает коды с единственного используемого пульта. Затем он передает несколько ИК-кодов различным устройствам.
Чтобы прослушать Spotify, нажмите выбранную кнопку (TV / SAT) на пульте дистанционного управления и Arduino:
- Включает приемник Pioneer
- Выбирает правильный источник на ресивере (TV / SAT)
- Включает Apple TV, который будет использоваться для Airplay с iPhone или iPad
Для прослушивания радиоканала из окна настройки телевизора KPN нажмите выбранную кнопку (DVD / LD) на пульте дистанционного управления и Arduino:
- Включает приемник Pioneer
- Выбирает правильный источник на ресивере (DVD / LD)
- Включает окно настройки телевизора KPN
- Выбирает режим радио в поле настройки
Для воспроизведения компакт-диска нажмите выбранную кнопку (CD) на пульте дистанционного управления и Arduino:
- Включает приемник Pioneer
- Выбирает правильный источник на ресивере (CD)
Снова нажав кнопку TV / SAT, DVD / LD или CD, Arduino снова выключает все устройства и переводит ТВ-тюнер в режим ТВ.
Также были использованы четыре кнопки на пульте дистанционного управления для выбора различных радиоканалов в окне настройки телевизора KPN.
Вся электроника собрана в одном корпусе с внешним источником питания 5 В. Зеленый светодиод мигает при получении ИК-сигнала. Красный светодиод мигает при отправке ИК-кодов.
Магнит внутри коробки, металлическая шайба и немного клейкой ленты используются для удержания коробки на месте перед аудиооборудованием.
Шаг 1. Разбираемся, что к чему
После нескольких десятков минут отчаянного гугления пришел к выводу, что создать приставку даже типа Денди у меня не получится. Ну, что тут делать, раз взялся, буду доводить дело до конца.
На сайте, посвященному проектам на Ардуино и вообще радиоэлектронике в целом (не реклама) нашел статью о подобной затее. Было решено использовать библиотеку TVout, так как приставка тв-шная. Для ее установки и работы пришлось немного пошаманить.
Функции установки режима
Функция begin() инициализирует вывод видеосигнала (разрешение экрана по умолчанию 128×96).
Синтаксис:
TVOut.begin(mode);
TVOut.begin(mode, x, y);
Параметры:
mode – стандарт видеосигнала:
_PAL – режим PAL;
_NTSC – режим NTSC.
Возвращаемое значение:
0 – в случае удачного соединения, 4 – в случае неудачи (недостаточно памяти для буфера вывода).
Функции задержки
Функция delay() осуществляет задержку выведенного изображения.
Синтаксис:
TVOut.delay(ms);
Параметры:
ms – задержка в мс с точностью: 20 мс для PAL и 16 мс для NTSC.
Функция delay_frame() осуществляет задержку выведенного изображения.
Синтаксис:
TVOut.delay_frame(frames);
Параметры:
frames – количество кадров для задержки…
Функция полезна для сведения к минимуму или устранения на мерцание экрана, вызванные обновлением экрана.
Функции получения параметров
Функция hres() возвращает горизонтальное разрешение экрана.
Синтаксис:
TVOut.hres();
Параметры:
нет.
Возвращаемое значение:
unsigned char – горизонтальное разрешение экрана.
Функция vres() возвращает вертикальное разрешение экрана.
Синтаксис:
TVOut.vres();
Параметры:
нет.
Возвращаемое значение:
unsigned char – вертикальное разрешение экрана.
Функция char_line() возвращает максимально возможное количество символов в одной строке при выводе текстовой информации.
Синтаксис:
TVOut. char_line();
Параметры:
нет.
Возвращаемое значение:
unsigned char – количество символов.
Основные графические функции
Функция set_pixel() устанавливает цвет пикселя экрана в точке с заданными координатами.
Синтаксис:
TVOut.set_pixel(x,y,color);
Параметры:
x,y – координаты пикселя;
color – цвет пикселя:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция get_pixel() получает цвет пикселя экрана из точки с заданными координатами.
Синтаксис:
TVOut.get_pixel(x,y);
Параметры:
x,y – координаты пикселя.
Возвращаемое значение:
color – цвет пикселя:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция fill() заполняет экран заданным цветом.
Синтаксис:
TVOut.fill(color);
Параметры:
color – цвет заполнения:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция clear_screen() очищает экран, заполняя заданным цветом.
Синтаксис:
TVOut.clear_screen(color);
Параметры:
color – цвет заполнения:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция invert() инвертирует содержимое экрана.
Синтаксис:
TVOut.invert();
Параметры:
нет.
Функция shift_direction() сдвигает содержимое экрана.
Синтаксис:
TVOut.shift_direction(distance, direction);
Параметры:
distance – расстояние для сдвига содержимого экрана.
direction – направление сдвига:
UP=0 – вверх;
DOWN=1 – вниз;
LEFT=2 – влево;
RIGHT=3 – вправо.
Функция draw_line() соединяет на экране линией две точки.
Синтаксис:
TVOut.draw_line(x0,y0,x1,y1,color);
Параметры:
x0,y0 – координаты первой точки;
x1,y1 – координаты второй точки;
color – цвет заполнения:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция draw_row() заполняет строку указанным цветом между двумя точками строки.
Синтаксис:
TVOut.draw_row(row,x0,x1,color);
Параметры:
row – вертикальная координата строки;
x1,x2 – горизонтальный координаты точек строки;
color – цвет заполнения:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция draw_column() заполняет строку указанным цветом между двумя точками столбца.
Синтаксис:
TVOut.draw_column(column,y0,y1,color);
Параметры:
column – горизонтальная координата столбца;
y1,y2 – вертикальные координаты точек столбца;
color – цвет заполнения:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция draw_rect() рисует на экране прямоугольник.
Синтаксис:
TVOut.draw_rect(x,y,w,h,color);
TVOut.draw_rect(x,y,w,h,color,fillcolor);
Параметры:
x,y – координаты левой верхней точки;
w,h – ширина и высота рисуемого прямоугольника;
color – цвет границ прямоугольника:
0 – черный;
1 – белый;
2 – инвертировать цвет.
fillcolor – цвет заполнения прямоугольника:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция draw_circle() рисует на экране круг.
Синтаксис:
TVOut.draw_ circle(x,y,r,color);
TVOut.draw_ circle(x,y,r,color,fillcolor);
Параметры:
x,y – координаты центра круга;
r – радиус круга;
color – цвет границ круга:
0 – черный;
1 – белый;
2 – инвертировать цвет.
fillcolor – цвет заполнения круга:
0 – черный;
1 – белый;
2 – инвертировать цвет.
Функция bitmap() выводит на экран растровое изображение.
Синтаксис:
TVOut.bitmap(x,y,bmp,w,h);
Параметры:
x,y – координаты левого верхнего угла точки вывода;
bmp – указатель на массив памяти, где хранится картинка;
w,h – ширина, высота выводимого изображения;
Ниже рассмотрим процесс создания кода выводимых растровых изображений.
Функции вывода текстовой информации
Для применения функций вывода текстовой информации требуетя подключение файлов с включенными в библиотеку или пользовательскими шрифтами. Для подключения пользовательского набора шрифтов необходимо в скетче подключить заголовочный файл:
#include
В состав библиотеки включены следующие наборы шрифтов:
font4x6;
font6x8;
font8x8;
font8x8ext.
Функция select_font() выбирает шрифт для вывода текстовой информации.
Синтаксис:
TVOut.select_font(font);
Параметры:
font – шрифт, подключенный в скетче.
Функция print_char() выводит символ на экран.
Синтаксис:
TVOut.print_char(x,y,char);
Параметры:
x,y – позиция на экране для вывода символа;
char – символ из текущего шрифта.
Функция set_cursor() устанавливает позицию курсора для вывода текстовой информации на экран.
Синтаксис:
TVOut.set_cursor(x,y);
Параметры:
x,y – координаты для курсора.
Функция print() выводит на экран строку, символ или число.
Синтаксис:
TVOut.print(x,y,string);
TVOut.print(x,y,char,base);
TVOut.print(x,y,int,base).
Параметры:
x,y – координаты курсора.
base – формат вывода:
BYTE = 0;
DEC = 10 (default);
HEX = 16.
Функция println() выводит на экран строку, символ или число и в конце символ перевода строки:
Синтаксис:
TVOut.println(x,y,string);
TVOut.println(x,y,char,base);
TVOut.println(x,y,int,base).
Параметры:
x,y – координаты курсора.
base – формат вывода:
BYTE = 0;
DEC = 10 (default);
HEX = 16.
Функции вывода аудио
Функции вывода звука позволяют отправлять на телевизор через аудиовыход сигнал определенной частоты.
Функция tone() выдает аудиосигнал определенной частоты.
Синтаксис:
TVOut.tone(frequency,duration);
TVOut.tone(frequency).
Параметры:
frequency – частота аудиосигнала;
duration – длительность сигнала.
Функция noTone() прекращает выдачу аудиосигнала.
Синтаксис:
TVOut.noTone().