Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!


#define IRpin 4
avrdude -c usbasp -p t13 -U lfuse:w:0x7a:m
avrdude -c usbasp -p t13 -U hfuse:w:0xff:m
unsigned long irCode = 0; // Wait for an IR Code
unsigned long listenForIR() {
byte currentpulse = 0;
unsigned int pulse; // temporary storage timing
unsigned long irCode = 0;
while (true) {
pulse = 0;
while (IRpin_PIN & _BV(IRpin)) { // got a high pulse
pulse++;
delayMicroseconds(RESOLUTION);
if (((pulse >= MAXPULSE) && (currentpulse >= 0)) || currentpulse == NUMPULSES) {
if (currentpulse > 3) {
if (lastcode != irCode) prevcode = lastcode;
lastcode = irCode;
} else if (currentpulse > 0) irCode = lastcode;
return irCode;
}
}
if (currentpulse > 1) {
irCode = irCode << 1;
if (pulse > 0 && (pulse * RESOLUTION) < 60) {
irCode |= 0;
} else {
irCode |= 1;
}
}
pulse = 0;
while (!(IRpin_PIN & _BV(IRpin))) { // got a low pulse
pulse++;
delayMicroseconds(RESOLUTION);
if (((pulse >= MAXPULSE) && (currentpulse >= 0)) || currentpulse == NUMPULSES) {
if (currentpulse > 3) {
if (lastcode != irCode) prevcode = lastcode;
lastcode = irCode;
} else if (currentpulse > 0) irCode = lastcode;
return irCode;
}
}
currentpulse++;
}
}
Реле с дистанционным ИК управлением на ATtiny13A