56 lines
1.3 KiB
C++
Executable File
56 lines
1.3 KiB
C++
Executable File
/*
|
|
Hacking Infrarouge
|
|
*/
|
|
|
|
// initialise la broche 2 en mode brut
|
|
#define IRpin_PIN PIND
|
|
#define IRpin 2
|
|
// définit le nombre de µs maximum à utiliser pour récupérer le signal
|
|
#define MAXPULSE 65000
|
|
// définit la résolution
|
|
#define RESOLUTION 20
|
|
// définit le tableau qui contiendra les 100 impulsions
|
|
uint16_t pulses[100][2];
|
|
uint8_t currentpulse=0;
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
Serial.println("Ready to decode IR !");
|
|
}
|
|
|
|
void loop() {
|
|
uint16_t highpulse, lowpulse;
|
|
highpulse = lowpulse = 0;
|
|
while (IRpin_PIN & (1 << IRpin)) {
|
|
highpulse++;
|
|
delayMicroseconds(RESOLUTION);
|
|
if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
|
|
printpulses();
|
|
currentpulse = 0;
|
|
return;
|
|
}
|
|
}
|
|
pulses[currentpulse][0] = highpulse;
|
|
while (! (IRpin_PIN & _BV(IRpin))) {
|
|
lowpulse++;
|
|
delayMicroseconds(RESOLUTION);
|
|
if ((lowpulse >= MAXPULSE) && (currentpulse != 0)) {
|
|
printpulses();
|
|
currentpulse = 0;
|
|
return;
|
|
}
|
|
}
|
|
pulses[currentpulse][1] = lowpulse;
|
|
currentpulse++;
|
|
}
|
|
|
|
void printpulses(void) {
|
|
Serial.println("\n\r\n\rReceived:\n\rOFF \tON");
|
|
for (uint8_t i = 0; i < currentpulse; i++) {
|
|
Serial.print(pulses[i][0] * RESOLUTION, DEC);
|
|
Serial.print(" usec, ");
|
|
Serial.print(pulses[i][1] * RESOLUTION, DEC);
|
|
Serial.println(" usec");
|
|
}
|
|
}
|