#define irPin 2
void setup() {
Serial.begin(9600);
pinMode(irPin, INPUT);
}
void loop() {
int i;
int data[32];
int s = pulseIn(irPin, HIGH);
int result = 0;
if (s > 3000) { //запись значений с датчика
for (i = 0; i < 32; i++)
data[i] = pulseIn(irPin, HIGH);
Serial.print("Код без обработки: ");
for (i = 0; i < 32; i++) { //вывод значений
Serial.print(data[i]);
Serial.print(" ");
}
Serial.println("");
Serial.print("Код: ");
for (i = 0; i < 32; i++) { //перевод значений в двоичный код
if (data[i] > 1000)
data[i] = 1;
else
data[i] = 0;
Serial.print(data[i]);
}
int adr = 0;
int com = 0;
for (i = 7; i >= 0; i--) //извлекаем из массива неинвертированный сигнал (адрес и команду)
adr |= (data[i] << i);
for (i = 7; i >= 0; i--)
com |= (data[16 + i] << i);
Serial.println(""); //выводим в Serial
Serial.print("Адрес: "); Serial.print(adr); Serial.print(" Бинарный: "); Serial.println(adr, BIN);
Serial.print("Команда: "); Serial.print(com); Serial.print(" Бинарный: "); Serial.println(com, BIN);
Serial.println("---------------------------------");
}
}