Инфракрасные (ИК) приемники предоставляют возможности управления устройствами с помощью ИК-пульта, превращая Arduino Uno в мощный инструмент для создания умных систем. Эта статья предлагает подробный обзор процесса подключения ИК-приемника к плате Arduino Uno. Мы рассмотрим шаги подключения, необходимые библиотеки, а также предоставим пример кода для управления устройствами при помощи ИК-сигналов.
Инфракрасные приемники – это электронные устройства, способные принимать сигналы, излучаемые ИК-источниками, такими как пульты дистанционного управления. Они состоят из фотодиода или фотоприемника, способного реагировать на инфракрасное излучение определенной частоты.
Принцип работы ИК приемников основан на фотоэлектрическом эффекте: когда ИК-сигнал попадает на приемник, фотодиод внутри устройства преобразует его в электрический сигнал. Этот сигнал затем обрабатывается микросхемой приемника, что позволяет интерпретировать команды, передаваемые пультом, для последующего управления устройствами или системами.
ИК приемники широко используются в различных устройствах, начиная от телевизоров и аудиосистем до систем дистанционного управления в проектах DIY, где они позволяют управлять электроникой с помощью ИК-пульта.
Arduino Uno – это платформа для прототипирования с открытым исходным кодом, которая предоставляет простой способ начать работу с микроконтроллерами. Она обладает мощностью и гибкостью для реализации широкого спектра проектов, от простых до сложных.
Характеристики Arduino Uno:
- Микроконтроллер: ATmega328P
- Рабочее напряжение: 5 В
- Цифровые входы/выходы: 14
- Аналоговые входы: 6
- Интерфейсы: USB, UART, I2C, SPI
Arduino Uno обладает простым интерфейсом, позволяющим легко соединять датчики, модули и другие устройства для реализации различных проектов DIY. Его гибкость и доступность делают его отличным выбором для электронных проектов разного уровня сложности.
Схема подключения
Для примера рассмотрим, как управлять пятью светодиодами, используя ИК пульт. Соберите представленную нами схему, вот описание подключения:
ИК-приемник | Arduino Uno |
---|---|
OUT | A0 |
GND | GND |
VCC | 5V |
Аноды светодиодов подключены к цифровым пинам Arduino с 13 по 9, а катоды соединены вместе и подключены к GND через резистор 220 Ом.
Библиотеки
Для работы с ИК приёмником нам понадобиться библиотека “IRremote”. Для её установки в Arduino IDE проделайте следующие шаги:
- Откройте Arduino IDE: Запустите Arduino IDE на вашем компьютере.
- Откройте менеджер библиотек: Перейдите в меню “Скетч” (Sketch) -> “Подключить библиотеку” (Include Library) -> “Управление библиотеками” (Manage Libraries).
- Найдите библиотеку IRremote: В окне “Управление библиотеками” введите в строке поиска “IRremote”. Вы увидите библиотеку “IRremote by shirriff“.
- Установите библиотеку: Когда вы найдете библиотеку “IRremote”, кликните по ней. В открывшемся окне нажмите кнопку “Установить” (Install). Arduino IDE начнет загружать и устанавливать библиотеку.
- Подтвердите установку: После завершения установки вы увидите надпись “Установлено” (Installed) рядом с библиотекой IRremote.
- Проверьте доступность библиотеки: Для проверки правильности установки библиотеки вы можете перейти в “Скетч” (Sketch) -> “Подключить библиотеку” (Include Library). В списке должна быть видна установленная библиотека “IRremote”.
Пример кода
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#include <IRremote.h> // Подключаем библиотеку для работы с IR const uint8_t IR_PIN = A0; // Определяем пин, к которому подключен IR-приемник IRrecv IRreciver(IR_PIN); // Создаем объект для приема IR-сигналов decode_results results; // Объект для хранения результатов декодирования IR-сигнала const uint8_t LEDS[] = {13, 12, 11, 10, 9}; // Массив пинов, к которым подключены LED-диоды void handle_results(decode_results *); // Функция для обработки результатов декодирования IR-сигнала void setup() { Serial.begin(9600); // Начинаем работу с Serial (для отладки) IRreciver.enableIRIn(); // Включаем прием IR-сигналов for (uint8_t i = 0; i < 5; i++) pinMode(LEDS[i], OUTPUT); // Устанавливаем режим работы пинов как OUTPUT (выход) } void loop() { if (IRreciver.decode(&results)) // Если приемник успешно декодировал IR-сигнал { Serial.print("Полученный сигнал: "); // Выводим полученный сигнал в Serial Serial.println(results.value); handle_results(&results); // Обрабатываем результаты декодирования IRreciver.resume(); // Возобновляем прием IR-сигналов } } void handle_results(decode_results *results) // Функция для обработки результатов декодирования IR-сигнала { uint8_t selected_led; // Переменная для хранения выбранного LED bool current_state; // Переменная для хранения текущего состояния LED switch (results->value) // Обрабатываем полученный сигнал в зависимости от его значения { case (16718055): selected_led = 0; break; case (16718031): selected_led = 1; break; case (16721154): selected_led = 2; break; case (16325455): selected_led = 3; break; case (12360575): selected_led = 4; break; default: return; } current_state = digitalRead(LEDS[selected_led]); // Читаем текущее состояние выбранного LED digitalWrite(LEDS[selected_led], !current_state); // Меняем состояние выбранного LED на противоположное } |
Прежде, чем ваше устройство будет корректно работать, вам необходимо правильно указать значения, получаемые с ИК приёмника при нажатии определённой кнопки. Для это загрузите скетч на Arduino и откройте монитор порта, направьте пульт на приемник и посмотрите, какие коды выводятся в монитор порта. Скопируйте коды для нужных вам кнопок и вставьте их в соответствующие выражения в switch-case.
Например, если вы хотите переключать состояние первого светодиода кнопкой “1” на пульте, то наведите пульт на приемник и нажмите эту кнопу, в мониторе появиться число, например, 16718055. Скопируйте его в вставьте в первое выражение case():
1 2 3 |
case (16718055): selected_led = 0; break; |
Проделайте аналогичную операцию для остальных кнопок, которые вы хотите использовать и загрузите измененную программу на Arduino. После этого устройство будет готово к работе.
2 комментария. Оставить новый
Что, если в мониторе я вижу при нажатии разных кнопок одно и то же в зависимости от кода?
FFFFFFFFFF или же
Полученный сигнал: 4294967295
Вне зависимости это одна и та же кнопка или 3 разных.
Такая же проблема, И ТАКОЙ ЖЕ НОМЕР СИГНАЛА! Постоянно выводит 4294967295