#include <IRremote.h>
#define PIN_RECEIVER 2 // Signal pin of the IR receiver
IRrecv receiver(PIN_RECEIVER);
void setup() {
Serial.begin(9600);
Serial.println("IR Frequency and Command Analyzer");
receiver.enableIRIn(); // Start the receiver
}
void loop() {
// Check if an IR signal is received
if (receiver.decode()) {
Serial.println("IR Signal Received:");
displayRawData(); // Display raw data
displayCommand(); // Display decoded command and frequency
receiver.resume(); // Prepare for the next signal
}
}
void displayRawData() {
// Print raw data buffer
if (receiver.decodedIRData.rawDataPtr) {
Serial.print("Raw Data: ");
for (int i = 0; i < receiver.decodedIRData.rawDataPtr->rawlen; i++) {
Serial.print(receiver.decodedIRData.rawDataPtr->rawbuf[i]);
Serial.print(" ");
}
Serial.println();
}
}
void displayCommand() {
// Print decoded command
uint32_t command = receiver.decodedIRData.command;
Serial.print("Decoded Command: ");
Serial.println(command);
// Calculate frequency
if (receiver.decodedIRData.rawDataPtr && receiver.decodedIRData.rawDataPtr->rawlen > 1) {
unsigned int frequency = 1000000 / receiver.decodedIRData.rawDataPtr->rawbuf[1] / 0.241246;
Serial.print("Frequency: ");
Serial.print(frequency);
Serial.println(" Hz");
} else {
Serial.println("Frequency data unavailable.");
}
}