Arduino ir receiver v 1222 ir transmitter v1221
короче надо что бы записался сигнал с пульта а потом его можно было воспроизвести
вот мой код но он не работает #include <IRremote.h> #define RECEIVER_PIN 4 // Пин для ИК-приемника (OUT) #define TRANSMITTER_PIN 5 // Пин для ИК-передатчика (DAT) #define BUTTON_PIN 6 // Пин для кнопки IRrecv irrecv(RECEIVER_PIN); decode_results results; uint32_t savedCode = 0; // Переменная для хранения сохраненного кода bool signalSaved = false; // Флаг, указывающий, что сигнал сохранен void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Запуск ИК-приемника pinMode(BUTTON_PIN, INPUT_PULLUP); // Настройка кнопки Serial.println("Поднесите пульт к ИК-приемнику для записи сигнала..."); } void loop() { // Считывание сигнала с ИК-пульта if (irrecv.decode(&results)) { savedCode = results.value; // Сохраняем код signalSaved = true; // Устанавливаем флаг, что сигнал сохранен Serial.print("Код сигнала: "); Serial.println(savedCode, HEX); // Вывод кода в шестнадцатеричном формате irrecv.resume(); // Возобновляем прием } // Проверка нажатия кнопки для отправки сигнала if (signalSaved && digitalRead(BUTTON_PIN) == LOW) { // Воспроизведение сигнала с ИК-передатчика IRsend irsend(TRANSMITTER_PIN); irsend.sendNEC(savedCode, 32); // Отправка сигнала (например, NEC) Serial.println("Сигнал отправлен!"); signalSaved = false; // Сбрасываем флаг delay(2000); // Задержка для предотвращения повторной отправки } }
помогите пожалуйста
#include <IRremote.h>
#define RECEIVER_PIN 4
#define TRANSMITTER_PIN 5
#define BUTTON_PIN 6
IRrecv irrecv(RECEIVER_PIN);
decode_results results;
IRsend irsend(TRANSMITTER_PIN);
uint32_t savedCode = 0;
int protocol = 0;
bool signalSaved = false;
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP);
irrecv.enableIRIn();
Serial.println("Поднесите пульт к ИК-приемнику для записи сигнала...");
}
void loop() {
if (irrecv.decode(&results)) {
savedCode = results.value;
protocol = results.decode_type;
signalSaved = true;
Serial.print("Код: "); Serial.println(savedCode, HEX);
Serial.print("Протокол: ");
switch (protocol) {
case NEC: Serial.println("NEC"); break;
case SONY: Serial.println("SONY"); break;
case RC5: Serial.println("RC5"); break;
case RC6: Serial.println("RC6"); break;
case DISH: Serial.println("DISH"); break;
default: Serial.println("Неизвестный");
}
irrecv.resume();
}
if (digitalRead(BUTTON_PIN) == LOW && signalSaved) {
switch (protocol) {
case NEC:
irsend.sendNEC(savedCode, 32);
break;
case SONY:
irsend.sendSony(savedCode, 20); // Для SONY 12/20 бит
break;
case RC5:
irsend.sendRC5(savedCode, 13);
break;
case RC6:
irsend.sendRC6(savedCode, 20);
break;
default:
Serial.println("Протокол не поддерживается!");
break;
}
Serial.println("Сигнал отправлен!");
signalSaved = false;
delay(2000);
}
} Тут исправлен IRsend irsend(TRANSMITTER_PIN) и еще по мелочи
Только глянь, что передатчик подсоединен к пину 5 и имеет резистор 220-330 Ом в цепи. После запуска кода поднеси пульт и нажми кнопку. В Serial Monitor увидишь протокол, например, NEC. Если протокол не поддерживается, укажи его в switch-конструкции
Спасибо
не неработает
Там написано протокол не поддерживается
А с чего бы работало то, что нагенерил ЧятЖПТ? :)
вот что выходит
Код: 0x0
Протокол: Неизвестный
Код: 0x0
Протокол: Неизвестный
Код: 0x0
Протокол: Неизвестный
Код: 0x0
Протокол: Неизвестный
Код: 0x2E36A7EE
Протокол: Неизвестный
Код: 0x88A5C215
Протокол: Неизвестный
Нажата кнопка! Отправка сигнала...
Сигнал отправлен (raw)!
при отправле на трансмиттере лампочка загорается но телевизору по барабану
К********0"�
Протокол: Неизвестный
Длина raw: 68
телику все равно
телевизор самсунг кнопка включения выключения
Пока не научишься вставлять текст кода, работать ничего не будет