Подключение инфракрасного приемника к Arduino

 Иногда требуется управлять Arduino по беспроводной связи, самым простым способом станет управление через инфракрасный канал при помощи любого пульта с инфракрасным передатчиком. Пульт можно использовать абсолютно любой, от телевизора или проигрывателя тут не имеет значения.

 Вся наша задача сводится к нескольким операциям, принять сигналы и использовать коды нажатых кнопки для выполнения каких либо действий при помощи Arduino.

 Начнем с аппаратной части, нам потребуется ИК-приемник который и будет принимать наши сигналы с отправленные с пульта (если на картинке нет вашего приемника то гуглим, иначе можем сжечь его неправильным подключением). GND это минус, Vs это +5 вольт и Vo это выход нашего приемника.

Подключение инфракрасного приемника к Arduino
Подключение инфракрасного приемника к Arduino
Подключение инфракрасного приемника к Arduino

 Подключаем ИК-приемник к Arduino как показано на картинке (можно подключать без конденсаторов и на прямую без токоограничивающего сопротивления но для длительной работы нужно подключать именно так, конденсатор на 0.1 нужен для подавления помех по питанию), начальную аппаратную часть мы сделали и можно приступать к программной.

 Для работы ИК-приемником и возможно в будущем ИК-передатчиком нам потребуется библиотека IRremote и небольшой тестовый скетч при помощи котрого мы будем принимать коды нажатых кнопок.

 Устанавливаем библиотеку и загружаем в Arduino тестовый скетч, открываем монитор порта (Ctrl+Shift+M в программе Arduino), далее при нажатии кнопок на нашем ИК-пульте мы увидим коды кнопок которые принимает Arduino через ИК-приемник.

Подключение инфракрасного приемника к Arduino

 Мы видим что наш ИК-пульт посылает сигналы в кодировке NEC и коды нажатых кнопок, а так же видим иногда текст "Received NEC: repeat; ignoring. " это говорит о том что срабатывает защита от залипания кнопок (защита от дребезга кнопки или повторного нажатия в очень узкий промежуток времени).

 Итак коды кнопок у нас есть теперь можно приступать к простейшему коду, для начала попробуем включать и выключать светодиод при нажатии нужных нам кнопок на ИК-пульте.

 *Следует учесть что мои коды кнопок выглядят так FF40BF, а в коде мы будем писать так 0xFF40BF, то есть добаляем к нашему коду кнопки 0x перед самим кодом.

#include <IRremote.h>		// библиотека для ИК
int RECV_PIN = 6;		// pin ИК приемника
IRrecv irrecv(RECV_PIN);		// создаем объект получения сигнала с заданного порта
decode_results results;		// переменная хранящая результат
int LED = 8;		// pin нашего светодиода

void setup() {
	irrecv.enableIRIn();		// включаем ИК-приемник
	pinMode(LED, OUTPUT);		// устанавливает режим работы - выход
}

void loop() {
	if (irrecv.decode(&results)) {		// если есть сигнал
		if (results.value == 0xFF40BF) {		// код моей кнопки "FF40BF". У Вас он будет дугой!
			digitalWrite(LED, HIGH);		// зажигаем светодиод
		}
		if (results.value == 0xFF32CD) {		// код моей кнопки "FF32CD". У Вас он будет дугой!
			digitalWrite(LED, LOW);		// тушим светодиод
		}
		irrecv.resume();		// получаем следующее значение
	}
}

Подключение инфракрасного приемника к Arduino
Подключение инфракрасного приемника к Arduino

 Теперь можно управлять с ИК-пульта чем вам вздумается sad