#include <Arduino.h>
#include <IRsend.h>
#include <IRrecv.h>
#include <IRremoteESP8266.h>
#include <IRac.h>
#include <IRutils.h>
const uint16_t kRecvPin = 23;
const uint16_t kIrLedPin = 18;
const uint32_t kBaudRate = 115200;
const uint16_t kCaptureBufferSize = 1024;
const uint8_t kTimeout = 50; // Milli-Seconds
const uint16_t kFrequency = 38000; // in Hz. e.g. 38kHz.
IRsend irsend(kIrLedPin);
IRrecv irrecv(kRecvPin, kCaptureBufferSize, kTimeout, false);
decode_results results;
void captureData()
{
if (irrecv.decode(&results)) { // We have captured something.
uint16_t *raw_array = resultToRawArray(&results);
uint16_t length = getCorrectedRawLength(&results);
irsend.sendRaw(raw_array, length, kFrequency);
irrecv.resume();
// Display a crude timestamp & notification.
Serial.print(resultToHumanReadableBasic(&results));
String description = IRAcUtils::resultAcToString(&results);
if (description.length()) Serial.println("Description: " + description);
Serial.println(resultToSourceCode(&results));
yield();
Serial.println();
}
}
void setup() {
irrecv.enableIRIn(); // Start up the IR receiver.
irsend.begin(); // Start up the IR sender.
Serial.begin(kBaudRate, SERIAL_8N1);
while (!Serial) // Wait for the serial connection to be establised.
delay(50);
Serial.println();
uint16_t rawData[] = {9000, 4500, 560, 1690, 560, 1690, 560, 560, 560, 560};
// Calculate the length of the array
size_t length = sizeof(rawData) / sizeof(rawData[0]);
Serial.print("Length of rawData[]: ");
Serial.println(length);
}
void loop() {
captureData();
}