Files
Arduino/IRHacking/IRHacking.ino
Jérôme Delacotte 7b30d6e298 first commit
2025-03-06 11:15:32 +01:00

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");
}
}