Через Arduino Nano и пульт Saundmax от ТВ тюнера.
Библиотеку использовал IRremote 2.8.0 – скачать можно здесь – скачать IRremote 2.8.0
Arduino IDE 2.3.6
Код скретча для чтения кода кнопки “Меню”, схема подключения:
Распиновка на моём Инфракрасном приёмнике 1838:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
// In case the interrupt driver crashes on setup, give a clue
// to the user what's going on.
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin"); }
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
delay(100);
}
Код скретча для отправки кода кнопки “Меню”:
Для вывода сигнала ИК‑светодиод подключается через токоограничивающий резистор к третьему пину (D3, PWM). Важно не перепутать полярность: длинная ножка светодиода — это анод. В тестовой сборке с ИК‑диодом и резистором на 100 Ом дальность передачи составила около 4,5 метров. Если этого мало и нужно «пробивать» дальше, придется усилить сигнал, добавив выходной каскад с транзистором.
#include <IRremote.h>
IRsend irsend;
void setup()
{
Serial.begin(9600);
}
void loop()
{
//for (int i = 0; i < 1; i++) {
irsend.sendNEC(0xFFA25D, 32); // Отправка кода NEC (32 бита)
delay(5000);
//}
}
Примечание:
Зажигаем и выключаем светодиод на пине 13
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
// In case the interrupt driver crashes on setup, give a clue
// to the user what's going on.
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin"); }
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
switch ( results.value ) {
case 0xFF58A7:
digitalWrite( 13, HIGH );
break;
case 0xFFA25D:
digitalWrite( 13, LOW );
break;
}
irrecv.resume(); // Receive the next value
}
delay(100);
}
Также можно использовать другие библиотеки:
Для работы с приёмником есть несколько библиотек:
IRremote – сложная универсальная библиотека
IRLremote – более оптимизированная и продвинутая библиотека от NicoHood
NecDecoder – моя очень лёгкая библиотека для NEC пультов (пульт из набора и 99% пультов от бытовой техники и освещения)
Код для библиотеки NecDecoder и схема соединения:
// приём команд с пульта
// приёмник подключать на прерывание по FALLING
#include <NecDecoder.h>
NecDecoder ir;
// в прерывании вызываем tick()
void irIsr() {
ir.tick();
}
void setup() {
Serial.begin(115200);
// подключил на D2, прерывание 0
attachInterrupt(0, irIsr, FALLING);
}
void loop() {
// если пакет успешно принят
if (ir.available()) {
Serial.print("0x");
// адрес + команда (16 бит)
Serial.println(ir.readData(), HEX);
// команда (8 бит)
// Serial.println(ir.readCommand(), HEX);
Serial.print("paket");
// весь пакет (32 бита)
Serial.println(ir.readPacket(), HEX);
}
}
——————————————————————————–
Примечание:
———————————————-
В пересылке сигнала между пультом и приёмником используется коды вроде FF58A7, например, это видно в Ардуино – “микроник.рус/8046/” (IR (инфракрасный сигнал): Читаем данные с пульта и передаём их)
кнопка ок – FF58A7
кнопка ок – 00FF58A7
В шестнадцатеричной системе используются символы от 0 до 9 и буквы от A до F (или a до f) для обозначения значений от 0 до 15. Например:
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
A = 1010
B = 1011
C = 1100
D = 1101
E = 1110
F = 1111
Каждый символ соответствует четырём битам (полубайту или нибблу). Например, 0 = 0000, 1 = 0001, A = 1010.
Давайте попробуем расшифровать
кнопка ок – FF58A7
кнопка ок – 00FF58A7
0000 0000 1111 1111 0101 1000 1010 0111
1111 1111 0101 1000 1010 0111
0 0 F F 5 8 A 7
00000000111111110101100010100111
—————————————————————–
И ещё один код с другого пульта
кнопка ок – 4FB52AD
кнопка ок – 04 FB 52AD
0000 0100 1111 1011 0101 0010 1010 1101
Также с помощью python можно преобразовать 16-ую систему в 2-ую:
a = "FF58A7" binary_value = format(int(a, 16), 'b') # '110100011' print(binary_value)
111111110101100010100111
————————————-
Примечание 2:
Запись сигналов IR-пульта на звуковую карту – “микроник.рус/7989/”













