Arduino – Управление светодиодами с помощью ИК-пульта дистанционного управления
В этом проекте вы будете использовать инфракрасный (ИК) приемник и Arduino для управления 3 светодиодами с помощью пульта дистанционного управления. Это полезно для повторного использования старых пультов дистанционного управления или для придания функциональности некоторым кнопкам вашего пульта.
Обновлено 17 декабря 2024 г.
Этот проект разделен на две части:
Вы декодируете ИК-сигналы, передаваемые вашим пультом дистанционного управления
Вы используете эту информацию для выполнения задачи с Arduino (управление 3 светодиодами)
Необходимые компоненты
Для выполнения этого проекта вам понадобятся следующие компоненты:
Arduino UNO – ознакомьтесь с лучшими стартовыми наборами Arduino
Вы можете использовать приведенные выше ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!
Знакомство с инфракрасным (ИК) приемником
Инфракрасный приемник – это компонент, показанный на рисунке ниже. Это TSOP4838.
Выводы инфракрасного приемника:
Первый вывод: Vout
Второй вывод: GND
Третий вывод: Vcc
Когда вы нажимаете кнопку на пульте дистанционного управления, он отправляет инфракрасные модулированные сигналы. Эти сигналы содержат информацию, которую собирает ваш приемник.
Каждая кнопка отправляет определенную информацию. Таким образом, мы можем привязать эту информацию к конкретной кнопке.
Декодирование ИК-сигналов
В этой части проекта вам нужно декодировать ИК-сигналы, связанные с каждой кнопкой.
Схема подключения
Подключите ИК-приемник в соответствии со схемой ниже.
Код
Для управления ИК-приемником вам необходимо установить библиотеку `IRremote <https://github.com/z3t0/Arduino-IRremote>`__ в Arduino IDE.
Установка библиотеки IRremote
Перейдите в Sketch > Include Library > Manage Libraries.
Менеджер библиотек должен открыться на левой боковой панели IDE. Найдите IRremote.
Установите библиотеку от shirriff. Мы используем версию 4.4.1.
Скопируйте следующий код в вашу Arduino IDE и загрузите его на плату Arduino. Убедитесь, что выбраны правильная плата и COM-порт.
#include <IRremote.h>
const int RECV_PIN = 11;
void setup() {
Serial.begin(9600);
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // Initialize the receiver
}
void loop() {
if (IrReceiver.decode()) { // Check if data is received
// Filter out unknown protocols
if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
IrReceiver.resume(); // Resume receiving for the next signal
return; // Skip this loop iteration
}
// Print only valid data
IrReceiver.printIRResultShort(&Serial); // Print complete received data in one line
IrReceiver.resume(); // Resume receiving for the next signal
}
delay(100);
}
Откройте монитор порта на скорости 9600 бод.
В этом проекте вы хотите управлять 3 светодиодами. Выберите 6 кнопок на пульте дистанционного управления для следующих задач:
LED1 – ВКЛ
LED1 – ВЫКЛ
LED2 – ВКЛ
LED2 – ВЫКЛ
LED3 – ВКЛ
LED3 – ВЫКЛ
Нажмите, например, кнопку с цифрой 1 на вашем пульте дистанционного управления. Вы должны получить некоторую информацию об этой кнопке в мониторе порта. Сохраните значение «command» для этой кнопки.
Проделайте то же самое для остальных кнопок.
Запишите код, связанный с каждой кнопкой, потому что эта информация понадобится вам позже.
Сборка финальной схемы
В этой части вы соберете схему с тремя светодиодами, которые будут управляться с помощью вашего пульта.
Схема подключения
Соберите все компоненты, следуя приведенной ниже схеме.
Код
Теперь возьмите значения команд, которые вы записали на предыдущем шаге для каждой кнопки. Вам нужно будет вставить их в следующий код.
/*
* Modified by Rui Santos, http://randomnerdtutorialscom
* based on IRremote Library - Ken Shirriff
*/
#include <IRremote.h>
const int RECV_PIN = 11;
const int bluePin = 10;
const int greenPin = 9;
const int yellowPin = 8;
void setup() {
Serial.begin(9600); // Start serial communication
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // Start the receiver
pinMode(bluePin, OUTPUT); // Set the pins as output
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
}
void loop() {
// Decode the infrared input
if (IrReceiver.decode()) {
if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
IrReceiver.resume(); // Resume receiving for the next signal
return; // Skip this loop iteration
}
// Print the received command for debugging
IrReceiver.printIRResultShort(&Serial);
switch (IrReceiver.decodedIRData.command) {
case 0x01: // Command to turn ON the blue LED
digitalWrite(bluePin, HIGH);
Serial.println("Blue LED ON");
break;
case 0x02: // Command to turn ON the green LED
digitalWrite(greenPin, HIGH);
Serial.println("Green LED OFF");
break;
case 0x03: // Command to turn ON the yellow LED
digitalWrite(yellowPin, HIGH);
Serial.println("Yellow LED ON");
break;
case 0x04: // Command to turn OFF the blue LED
digitalWrite(bluePin, LOW);
Serial.println("Blue LED OFF");
break;
case 0x05: // Command to turn OFF the green LED
digitalWrite(greenPin, LOW);
Serial.println("Green LED OFF");
break;
case 0x06: // Command to turn OFF the yellow LED
digitalWrite(yellowPin, LOW);
Serial.println("Yellow LED OFF");
break;
default: // Unknown command
Serial.println("Unknown Command");
break;
}
IrReceiver.resume(); // Receive the next value
}
delay(10);
}
После добавления команд для каждой кнопки в приведенный выше код вы можете загрузить его в вашу Arduino IDE.
Демонстрация
В итоге вы можете управлять каждым светодиодом индивидуально, используя кнопки вашего пульта дистанционного управления.
Смотрите видео-демонстрацию
Заключение
Это отличный проект для изучения ИК-приемника. Существует бесконечное множество возможностей того, что вы можете с ним сделать.
Например, вы можете заменить эти светодиоды реле для управления бытовыми приборами. Назначить кнопку для одновременного включения или выключения всех светодиодов и т.д.
Это может быть особенно полезно, потому что на некоторых пультах есть множество кнопок, которые вы никогда не используете. Так почему бы не использовать их для чего-то полезного?
Это отрывок из нашего курса: Arduino Step-by-step projects. Если вам нравится Arduino и вы хотите создавать больше проектов, мы рекомендуем записаться на курс Arduino Step-by-step projects.