Управление ардуино с пульта от телевизора
Привет! Сегодня доработаем программу для обработки сигналов с ИК пульта. Подключим rgb светодиод к схеме и будем управлять Ардуино ДУ пультом.
Содержание
1 Для выполнения этого урока нам понадобятся
2 Принципиальная схема
3 Программа
4 Полный текст программы
5 Заключение
6 Где купить
7 Похожее
В прошлый раз мы делали обзор на приемник ик сигналов для Ардуино. В этом проекте мы будем его использовать, поэтому посмотрите тот пост, если пропустили.
Для выполнения этого урока нам понадобятся
- Ардуино UNO
- Макетная плата
- Перемычки
- IR модуль KY-022
- RGB светодиод
- 3 резистора 220 Ом
- Пульт ДУ
- Кабель USB
Принципиальная схема
Соберем схему с приемником ИК сигналов и RGB светодиодом.
Программа
А чтобы управлять светодиодом нам понадобиться доработать стандартную программу приема ИК сигнала.
Заведем нужные переменные для контактов rgb светодиода и для состояние каждого цвета. А так же, нам будет нужна переменная для сохранения состояние нажатой на пульте кнопки.
int RLED = 3;
int GLED = 5;
int BLED = 6;
int red = 0;
int green = 0;
int blue = 0;
В функции setup() настроим контакты на вывод
void setup() pinMode(LED_BUILTIN, OUTPUT);
pinMode(RLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(BLED, OUTPUT);
Serial.begin(115200);
IrReceiver.enableIRIn(); // Start the receiver
>
В функции loop() будем считывать сигналы от пульта. И передавать в нашу функцию принятое значение.
void loop() if (IrReceiver.decode()) Serial.println();
SetLED( IrReceiver.results.value );
IrReceiver.resume(); // Receive the next value
>
>
И теперь осталось написать функцию для обработки кодов.
Во-первых, выведем все коды, которые принимает модуль. Таким образом мы узнаем код, соответствующий нажатию каждой кнопки. Чтобы использовать его в программе.
Во-вторых, код -1 отвечает за повтор предыдущего кода. То есть, если нажать на кнопку и удерживать ее, то код будет -1. Нам понадобиться этот код, чтобы запрограммировать кнопки уменьшения и увеличения яркости на пульте.
Так же, в этом случае, нам нужно сохранить состояние нажатой кнопки до повтора, сохраним ее в конце функции в переменную oldCode .
И наконец, запрограммируем каждый код от пульта для включения своего цвета на RGB светодоиде.
Полный текст программы
int RLED = 3;
int GLED = 5;
int BLED = 6;
int red = 0;
int green = 0;
int blue = 0;
void setup() pinMode(LED_BUILTIN, OUTPUT);
pinMode(RLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(BLED, OUTPUT);
void SetLED( int code ) Serial.print("CODE: \t");Serial.println(code);
switch (code) case -1:
SetLED(oldCode);
break;
case -16321:
red = 255; green = 255; blue = 255;
break;
case 16575:
red = 0; green = 0; blue = 0;
break;
case 8415:
red = 255; green = 0; blue = 0;
break;
case -24481:
red = 0; green = 255; blue = 0;
break;
case 24735:
red = 0; green = 0; blue = 255;
break;
case 10455:
red = 127; green = 127; blue = 0;
break;
case -22441:
red = 0; green = 127; blue = 127;
break;
case 26775:
red = 127; green = 0; blue = 127;
break;
case -32641:
red--;green--;blue--;
break;
case 255:
red++;green++;blue++;
break;
>
if( code != -1 )
analogWrite(RLED, red = constrain(red, 0, 255));
analogWrite(GLED, green = constrain(green, 0, 255));
analogWrite(BLED, blue = constrain(blue, 0, 255));
Serial.print("RED: \t");Serial.println(red);
Serial.print("GREEN: \t");Serial.println(green);
Serial.print("BLUE: \t");Serial.println(blue);
>
void loop() if (IrReceiver.decode()) Serial.println();
SetLED( IrReceiver.results.value );
IrReceiver.resume(); // Receive the next value
>
>
Заключение
Таким образом мы написали программу для обработки ИК сигналов от пульта ДУ. Естественно, вместо rgb светодиода мы можем управлять любым другим оборудованием, с помощью управляющих сигналов от пульта. Хотя для света нужна прямая видимость между приемником и источником. Поэтому, возможно, использование беспроводной радио связи, например bluetooth , будет более предпочтительнее.
Начинаем работать с ИК приемником, или будем управлять светодиодами с пульта.
Для реализации этого проекта нам понадобиться немного радиодеталей: ИК приемник (VS 1838B), пульт ДУ (подойдет любой, но я буду использовать пока пульт от набора ардуино), два резистора на 100-200 Ом, конденсатор 10 мкФ, три светодиода разных цветов, и макетные провода с макетной платой.
Теперь немного теории (без этого никуда). Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Наверняка в каждом доме найдётся немало таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. А можно ли с помощью ПДУ (пульт дистанционного управления) управлять нашей Arduino Uno? Оказывается да! Для начала поставим скромную задачу: с помощью ПДУ зажигать и гасить светодиоды.
Но вернемся к нашему приемнику ИК VS1838B. Важно его грамотно подключить. А для этого давайте сначала познакомимся с его выводами. Он имеет три вывода: если посмотреть на датчик со стороны приёмника ИК сигнала, как показано на рисунке, то слева будет — выход на контроллер, по центру — отрицательный контакт питания (земля), и справа — положительный контакт питания (2.7 — 5.5В).
Далее собираем схему и давайте подключим библиотеку IRremote (ее можно будет загрузить с Яндекс диска по этой ссылке). Если кто еще не знает как это сделать, то вот здесь можно будет все наглядно посмотреть (ссылка на видео). Следующим этапом нам нужно убедиться, что наш ПДУ действительно подает сигналы на ИК приемник и все отображается в мониторе порта. Вообще для этого есть отдельный скетч (который можно загрузить из примера в библиотеке IRremote), но давайте сразу убьём обоих зайцев: возьмём готовый скетч (который мы в дальнейшем будем настраивать).
В данном проекте я покажу, как переназначить неиспользуемые кнопки на пульте дистанционного управления для управления светодиодной лентой, расположенной за вашим телевизором. Также вы сможете использовать данную методику для управления другими устройствами, незначительно изменив исходный код. Я собираюсь предоставить немного теоретической информации о том, как связываются друг с другом инфракрасный передатчик и инфракрасный приемник. Итак, приступим!
Шаг 1: Посмотрите видео!
Данное видео предоставит вам необходимые теоретические сведения о проекте и рекомендации по его воплощению.
Шаг 2: Заказ необходимых компонентов!
Список компонентов для данного проекта.
- Arduino Nano
- 2 резистора по 10 кОм
- конденсатор 100 мкФ
- DC штекер
- N-канальный мосфет IRLZ44N
- инфракрасный приемник (TSOP4838)
- плата Veroboard
Шаг 3: Сборка схемы
На данном шаге показано схемное решение. Разводку платы можно сделать самостоятельно или использовать мою. Она работает без каких-либо проблем.
Шаг 4: Программирование Arduino Nano!
В прикрепленных файлах представлен код/скетч для Arduino Nano. Не забудьте его загрузить до начала проведения тестирования.
Шаг 5: Окончание!
Ну вот, все и готово. Теперь вы сможете контролировать все, что нужно с помощью вашего телевизионного пульта дистанционного управления. Не забудьте удобно сесть в кресло, так как с него уже можно больше не вставать!
Урок по управлению светодиодами с помощью ИК-пульта дистанционного управления с использованием Arduino Uno R3 в качестве контроллера.
Комплектующие
Ниже перечислим все комплектующие для нашего урока.
Arduino Uno R3
Arduino Uno R3 - это плата, которая поможет вам обработать код и заставить вашу схему работать. Вы также можете купить данную плату в любом удобном магазине.
Макетная плата
Макетная плата поможет вам собрать схему без необходимости паять детали.
Кабель для Arduino
Этот кабель поможет вам подключить Ардуино к вашему ноутбуку.
ИК-приемник
ИК-пуль дистанционного управления
ИК-пульт отправляет ИК-сигнал на ИК-приемник.
Перемычки "мама-мама"
Перемычки помогут соединить различные комплектующие на макетной плате.
Светодиоды
Светодиод включается и светится, когда на него подается электричество.
Резисторы 1 КОм и 220 Ом
Резисторы помогают уменьшить количество тока, протекающего в цепи. Они нужны для того, чтобы обезопасить многие детали от поломки.
Схема соединения
Следуйте согласно схеме ниже для того, чтобы собрать всё вместе.
Код проекта
Для начала нам нужно сказать библиотеку для ИК-управления IRremote.
В первом варианте с несколькими светодиодами и 220 Ом резисторами наш код выглядеть будет таким образом:
Во втором варианте с резисторами 1 КОм (схема выше) можно использовать следующий код:
Добавление опций в схему
Вы можете добавить больше вещей в схему, найдя коды различных кнопок ИК-пульта дистанционного управления и написав коды для их вставки и их работы. Например, ниже приведен код, который мы бы добавили к коду, чтобы светодиоды светились по определенному шаблону.
Результат
Решения, если цепь не работает.
- Проверьте соединения в цепи, правильно ли вы все соединили.
- Если у вас нет ИК-пульта Elegoo, найдите коды кнопок вашего ИК-пульта и замените их на коды в IRCode == (ваш код).
- Проверьте, правильный ли код вы скопировали.
На этом наш урок закончен. Больше про работу с пультами дистанционного управления будет в следующих уроках.
1 комментарий
постоянно выдает ошибку … у меня уно не работает ошибка и все
Добавить комментарий Отменить ответ
В соответствии со ст. 1259 ГК РФ все материалы данного сайта являются объектом авторского права. Исключительные права на его использование принадлеждат владельцу данного сайта, согласно п.1 ст.1229 ГК РФ. Любое копирование материалов данного сайта без разрешения владельца сайта запрещено законом.
© АрдуиноПлюс.ру, 2017—2021 ( 31–0,047 )
Читайте также: