Доброго всем дня. Возможно, кому-нибудь пригодится. Решил скопировать посылки пульта для магнитолы Sony. Используя библиотеку IRremote получил коды кнопок и узнал протокол (Sony 15bit), но при отправке магнитола отказывалась их принимать. Посмотрел осциллографом посылки пульта - оказывается, он отправляет пакет из 5 посылок, с паузой между ними, равной длине одной посылки. Таким образом, код для отправки приобретает следующий вид Спойлер: Код Код (C++): #include <IRremote.h> IRsend irsend; void setup() { } void loop() { for (int i = 0; i < 5; i++) { irsend.sendSony(0x2421, 15); // где 2421 - код кнопки delay(23); } delay(1000); } PS - подробной информации по данному протоколу в сети не нашел.
Еще возник вопрос, который пока не могу решить - каким образом можно вводить коды из serial-соединения? К примеру, вводим 3B21(уменьшение громкости) и получаем этот-же код для отправки. Буду признателен за любую помощь. Спасибо.
Считываем в массив Спойлер Код (C++): char incomingBytes[5]; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { Serial.readBytes(incomingBytes, 4); Serial.println(incomingBytes); } } Теперь загвоздка в том, как передать массив в irsend.sendSony?
Добился желаемого результата так Спойлер Код (C++): #include <IRremote.h> IRsend irsend; char incomingBytes[5]; unsigned long t; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { Serial.readBytes(incomingBytes, 4); Serial.println(incomingBytes); sscanf(incomingBytes, "%x", &t); Serial.println(t); for (int i = 0; i < 5; i++) { irsend.sendSony(t, 15); delay(23); } } }