Разобрался, как мне показалось. В общем ни да, ни нет.
- Код: Выделить всё • Развернуть
#include <IRremote.h>
int RECV_PIN = 11; // Pin, an den der Empf�nger angeschlossen ist
IRrecv irrecv(RECV_PIN); // Instanz der Receiver-Klasse
decode_results results; // Zur Aufnahme des ermittelsten Codes
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Startet den Receiver
}
// Gibt die Code-Sequenz auf der seriellen Schnittstelle aus
void printCode(decode_results *results) {
int codeLen = results->rawlen - 1; // The length of the code
for (int i = 1; i <= codeLen; i++) {
unsigned int rawCode;
if (i % 2) {
// Mark
rawCode = results->rawbuf[i] * USECPERTICK - MARK_EXCESS;
}
else {
// Space
rawCode = results->rawbuf[i] * USECPERTICK + MARK_EXCESS;
}
if (i > 1)
Serial.print(",");
Serial.print(rawCode, DEC);
}
Serial.println("");
}
void loop() {
if (irrecv.decode(&results)) {
printCode(&results);// вывод кода кнопки в "сигнатуре"
Serial.println(results.value, HEX);//код кнопки в привычном нам виде
irrecv.resume(); // resume receiver
}
}
Пульт, которым я шарик мучаю по кнопке, например, "ОК" даёт разные результаты по коду (8C837 - верный,1BCB3E0D - при направлении пульта в сторону) при одинаковых почти "сигнатурах кода"
8800,4600,450,650,450,700,450,650,450,700,400,700,450,700,400,700,450,700,400,750,400,700,400,700,450,700,400,1800,450,700,450,650,450,700,400,1850,400,1850,450,650,450,700,400,1800,450,700,450,650,450,700,450,650,450,700,400,1850,400,1850,400,700,450,1800,450,1800,450,1800,450
1BCB3E0D
8850,4550,500,650,450,650,500,650,450,650,450,650,500,650,450,650,500,650,450,650,500,650,450,650,500,650,450,1800,450,650,500,650,450,650,450,1800,450,1800,450,650,500,650,450,1750,500,650,500,650,450,650,500,650,450,650,450,1800,450,1800,450,650,500,1750,500,1750,500,1750,500
8C837
В итоге самописный пульт-приложение при любых сигнатурах кнопки в лучшем случае повторяет код отражённого сигнала. Чёто или автор не договаривает, или я не понимаю