Materials used:
Arduino Nano Clone from eBay (12 EUR shipped)
38 kHz TSOP (Vishay IR detector module)
Library used:
http://www.pjrc.com/teensy/td_libs_IRremote.html
My sketch:
Code: Select all
// If one keypress results in multiple codes being output, then
// change in IRremoteInt.h:
// #define _GAP 50000
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
int c = 1;
void dump(decode_results *results) {
int count = results->rawlen;
Serial.println(c);
c++;
Serial.println("For IR Scope: ");
for (int i = 1; i < count; i++) {
if ((i % 2) == 1) {
Serial.print("+");
Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
}
else {
Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
}
Serial.print(" ");
}
Serial.println("");
Serial.println("For Arduino sketch: ");
Serial.print("unsigned int raw[");
Serial.print(count, DEC);
Serial.print("] = {");
for (int i = 1; i < count; i++) {
if ((i % 2) == 1) {
Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
}
else {
Serial.print((int)results->rawbuf[i]*USECPERTICK, DEC);
}
Serial.print(",");
}
Serial.print("};");
Serial.println("");
Serial.print("irsend.sendRaw(raw,");
Serial.print(count, DEC);
Serial.print(",38);");
Serial.println("");
Serial.println("");
}
void loop() {
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume(); // Receive the next value
}
}
Code: Select all
1
For IR Scope:
+650 -2600 +600 -450 +550 -450 +600 -500 +650 -450 +600 -450 +600 -550 +500 -600 +500 -500 +600 -500 +550 -4200 +650 -2600 +550 -550 +600 -1000 +600 -350 +600 -600 +1050 -1050 +550 -550 +550 -400 +650 -500 +600
For Arduino sketch:
unsigned int raw[42] = {650,2600,600,450,550,450,600,500,650,450,600,450,600,550,500,600,500, 500,600,500,550,4200,650,2600,550,550,600,1000,600,350,600,600,1050,1050,550,550,550,400,650,500,600,};
irsend.sendRaw(raw,42,38);
Extend IR Scope to interface with the Arduino directly, anyone?