I set up the IR sensor, and it worked great. I then got my signal. This is where I got confused, and a bit overwhelmed.
Here is the signal I got.
Code: Select all
Received:
OFF ON
752 usec, 160 usec
52864 usec, 100 usec
29544 usec, 60 usec
35012 usec, 40 usec
80 usec, 60 usec
38872 usec, 40 usec
16248 usec, 60 usec
43388 usec, 40 usec
22332 usec, 60 usec
19840 usec, 80 usec
50776 usec, 120 usec
45440 usec, 80 usec
8876 usec, 120 usec
20232 usec, 120 usec
15168 usec, 40 usec
60 usec, 100 usec
27200 usec, 80 usec
50544 usec, 80 usec
63188 usec, 40 usec
43912 usec, 120 usec
44332 usec, 140 usec
63024 usec, 60 usec
13404 usec, 140 usec
11880 usec, 160 usec
51088 usec, 120 usec
17240 usec, 100 usec
3216 usec, 140 usec
48016 usec, 80 usec
51988 usec, 160 usec
39904 usec, 40 usec
32268 usec, 140 usec
25508 usec, 60 usec
60 usec, 100 usec
11948 usec, 80 usec
34068 usec, 60 usec
28332 usec, 160 usec
44368 usec, 40 usec
80 usec, 140 usec
8292 usec, 40 usec
60 usec, 60 usec
int IRsignal[] = {
// ON, OFF (in 10's of microseconds)
16, 5286,
10, 2954,
6, 3501,
4, 8,
6, 3887,
4, 1624,
6, 4338,
4, 2233,
6, 1984,
8, 5077,
12, 4544,
8, 887,
12, 2023,
12, 1516,
4, 6,
10, 2720,
8, 5054,
8, 6318,
4, 4391,
12, 4433,
14, 6302,
6, 1340,
14, 1188,
16, 5108,
12, 1724,
10, 321,
14, 4801,
8, 5198,
16, 3990,
4, 3226,
14, 2550,
6, 6,
10, 1194,
8, 3406,
6, 2833,
16, 4436,
4, 8,
14, 829,
4, 6,
6, 0};
As you can see this is significantly longer...
I am extremely confused on how to put this into code, so if anyone would be willing to do maybe the first 3 or 5 sets of pulses for me, and explain what I should do for the rest. I would be so grateful. Also can anyone tell me if this IR pulse looks normal?
Here is the example code for the PulseIR sketch
Code: Select all
// This sketch will send out a canon D50 trigger signal (probably works with most canons)
// See the full tutorial at http://www.ladyada.net/learn/sensors/ir.html
// this code is public domain, please enjoy!
int IRledPin = 12; // LED connected to digital pin 12
int buttonPin = 3; // footswitch connected to digital #3
// The setup() method runs once, when the sketch starts
void setup() {
// initialize the IR digital pin as an output:
pinMode(IRledPin, OUTPUT);
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH); // pullup on
Serial.begin(9600);
}
void loop()
{
if (! digitalRead(buttonPin)) {
// footswitch pressed
Serial.println("Sending IR signal");
SendCanonCode();
delay(3*1000); // wait 3 seconds (* 1000 milliseconds)
}
}
// This procedure sends a 38KHz pulse to the IRledPin
// for a certain # of microseconds. We'll use this whenever we need to send codes
void pulseIR(long microsecs) {
// we'll count down from the number of microseconds we are told to wait
cli(); // this turns off any background interrupts
while (microsecs > 0) {
// 38 kHz is about 13 microseconds high and 13 microseconds low
digitalWrite(IRledPin, HIGH); // this takes about 3 microseconds to happen
delayMicroseconds(10); // hang out for 10 microseconds
digitalWrite(IRledPin, LOW); // this also takes about 3 microseconds
delayMicroseconds(10); // hang out for 10 microseconds
// so 26 microseconds altogether
microsecs -= 26;
}
sei(); // this turns them back on
}
void SendCanonCode() {
// This is the code for my particular Canon, for others use the tutorial
// to 'grab' the proper code from the remote
pulseIR(2080);
delay(27);
pulseIR(440);
delayMicroseconds(1500);
pulseIR(460);
delayMicroseconds(3440);
pulseIR(480);
delay(65); // wait 65 milliseconds before sending it again
pulseIR(2000);
delay(27);
pulseIR(440);
delayMicroseconds(1500);
pulseIR(460);
delayMicroseconds(3440);
pulseIR(480);
}