Instructables
loading
loading
Picture of Control your Arduino with a remote
Wondering about how to control anything in your house with a simple remote control? It's pretty simple and cheap.

 
Remove these adsRemove these ads by Signing Up

Step 1: Collect stuff

Picture of Collect stuff
Here is what you will need:

- Arduino (I use UNO)
- Solderless breadboard
- An infrared receiver
- Solderless wires
- Any kind of remote control

Step 2: Assemble the receiver

Picture of Assemble the receiver
Plug in the ir receiver to the beradboard and connect it to your Arduino.

Connect the right pin to the 5V of the Arduino, the center pin to GND, and the left pin to digital pin 11.

Step 3: The code

Picture of The code
I used the IRremote library for arduino.
You can download it here: IRremote

Close the Arduino IDE and unzip it into the arduino/libraries folder.

Start Arduino IDE and open the IRrecvDemo example sketch. Rewrite "HEX" to "DEC" as the image shows.
Upload the sketch to your board.

Step 4: Identify remote buttons

Picture of Identify remote buttons
After uploading the program open the serial monitor and start pushing the buttons on your remote. If you have done everything well, you have to see the codes appearing.

Remember which button was pressed and take notes of the codes appearing.
For example:
Code 50088119 appeared and you pressed the On/Off button.
Code 50073839, Open/Close button etc...

Step 5: Control stuff

Picture of Control stuff
Now you know which code the buttons give. To control something you have to write them into the program.

Here is the code you have to use. It's not the best solution I think but it's simple.

switch(results.value){
    case 50088119:
    // do something
    break;
    case 50073839:
    // do something else...
    break;
  }


Have fun ;)
1-40 of 49Next »
CooperG11 days ago

in expansion of macro 'HEX'
Error compiling.

and

expected unqualified-id before numeric constant
#define HEX 16

are causing me problems

tashvin1 year ago
hi please help me i already had all the codes for the IR
what if i want to light 2 leds with the IR? which connections should i make? am new please hlep :(

I think you'll have to take two (or four) button's readings and apply them to two different LEDs.

Something like:

switch(results.value) {

case 1:

digitalWrite(13,HIGH);

break;

case 2:

digitalWrite(12,HIGH);

break;

case 3:

digitalWrite(13,LOW);

break;

case 4:

digitalWrite(12,LOW);

break;

}

universallvr2 months ago

IRrecvDemo.ino:9:22: fatal error: IRremote.h: No such file or directory
compilation terminated.

Maybe the IR library isn't present on your PC. Try downloading it from here: http://arcfn.com/files/IRremote.zip (from the tutorial).

After downloading it, open your IDE, click on "Sketch", click on "Import Library...", click on "Add Library", and finally, browse for your library.

antley2 months ago

I did make it! But I have no image. Awesome job! you have the most simple way to solve this problem of Remote Controlling projects, and it only requires 1 pin!

OnePiece0039.4 months ago

im receiving this error?

C:\Program Files\Arduino\libraries\IRremote\IRremote.cpp:529: error: 'volatile struct irparams_t' has no member named 'rawlen'

how did you fix it?

already fixed it

Fission Chips8 months ago

Awesome! Thank you so much for this. You are very smart, and thank you for making this.

Hi, I do not get anything in the serial monitor

hi, thanks for you work

i switch, when i press 0 for example

switch(results.value){

case 16738455:

Serial.println(0);

irrecv.resume();

break;

i want it to print 0, but it loops forever, can you help me?

Kamokaki1 year ago

hi im trying to controll my arduino to move a servo.

Could you help me put in the code?

The controll gives off the infrared as i press left: FF22DD and right FFC23D. Please help me figure this out.

#include <Servo.h>
#include <IRremote.h>

unsigned long Value1 = 0xFF22DD; // where XXXXXXXX is on our your remote's values
unsigned long Value2 = 0xFFC23D; // where XXXXXXXX is another button on your remote

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

Servo servo1;

// the setup routine runs once when you press reset:
void setup() {

Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver

// initialize the digital pin as an output.

servo1.attach(10); // attack servo to digital pin 10
}

// the loop routine runs over and over again forever:
void loop() {

if (irrecv.decode(&results)) {

Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}

if(results.value == Value1) {
servo1.write(160);
}
else if (results.value == Value2){
servo1.write(75);
}
}

vek111 year ago
Hello,
Whenever I plug my Arduino(with the IR receiver), it always turns off as soon as I plug it into the computer. Any advice?
(btw, my arduino works fine with anything else plugged into it.)
hello I get this ' IRrevc' does not name a type
jukees2 years ago
lidl remote FTW :D
I hade a small white IR receiver with only 2 leads. Would this work?
dmiller372 years ago
Excellent tutorial, very helpful. I have a quick question, what is the best way to deal with on/off of the same button. Since each button has two keys, i thought I could use them to turn on and off. it works, but the timing is an issue since the other key comes quickly after the first. What is the best way to deal with it?

I tried: (but the button pressing has to be timed perfectly)
case key1:
digitalWrite(LED, HIGH);
delay(150);
break;

case key2:
digitalWrite(LED, LOW);
delay(150);
break;

Thanks!
I have done this before, but I did it with pins so I could check the current state of the pin and then decide whether or not to make it on or off. The way I did this in an Instructable of mine was

switch (results.value)
case (blahblah)
{
if (digitalRead(pin) == LOW)
{
digitalWrite(pin, HIGH);
}
else
{
digitalWrite(pin, LOW);
}
}
}

If you have multiple pins to check, just make it a function, call it for each case and pass in the pin number. Hope this helped.
lawand42 years ago
help when i upload it marks that IRrecv irrecv(RECV_PIN); and says does not name the type
LexanPanda3 years ago
Which IR receiver did you use?
phorvath92 (author)  LexanPanda3 years ago
I don't know the type because I soldered it out maybe from an old dvd player but I'm not sure. I think it works on 38kHz.
Sparkfun has a great one for $1.95
the seaker3 years ago
Okay so i have a problem. I have already been able to get the ir codes from the remote that i wish to us but it will send something like this:
4035
4035
4035
4035
4035
2553
2553
2553
so the code is actually being send 5 times then another 3 are the end code. but sometimes if i press the button again the first number will either send 4 or 6 times. im not sure how to filter out the codes because if i just look for say 4035 it will repeat 4 to 6 times... um please if any one has an idea please help
Try an unsigned long so that in your program it looks like

#include

unsigned long someValue = 0xXXXXXXXX; // where XXXXXXXX is on our your remote's values.

void loop(){

if(results.value == someValue) {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

}
make a method that catches the first time that you receive the signal. then tell it to ignore the rest until you recieve the 2553 signal... something like this:

boolean ignore=false;

void setup(){
...
}

void loop(){
int sig= ;
//set your input here, sending your input to the to sig.
if (!ignore&&sig==4035)doSomething();
else ignore==true;
}

}
go4th5572 years ago
Mine shows zeroes no matter what button I push on any remote.
roachburn3 years ago
How would i use the case function to turn on an led. What I want to do is have the led turn High as long as I hold the button and go low when I release. The problem though is that there are 2 codes for every button on my remote. I press it once and it gives 458. then if I press it again it gives 10458. If I hold the button down It spams the one code and If i release then hold it down again it spams the other code.
thanks
pikmin2053 years ago
I've been receiving error codes saying "error: 'EE008FC9' was not declared in this scope", how do i fix this? (BTW, EE008FC9 is a remote key code)
phorvath92 (author)  pikmin2053 years ago
put it in decimal :)
new error: `.' cannot appear in a constant-expression
nvm fixed that now its expected ';' before break
Bot13983 years ago
Is that the original arduino UNO
phorvath92 (author)  Bot13983 years ago
No, probably it is not. But it is fully functional as well as the original.
I thought of it cause the power light in the original UNO is green and not blue
roachburn3 years ago
How come i get two different codes for each button. For example I press 1 on the remote I get 1025 then if i press it again i get 66561. If i hold it down it just repeats the same number. Every button does this.
i am having problems with the IRremote everytime i goto compile it i get errors lots of em
phorvath92 (author)  oldsmarracin3 years ago
What errors does it write?
nevermind i fixed it
i had to add #include IRremoteint.h
and change the #include WProgram.h inside the IRremoteint.h to #include Arduino.h
IDE 1.0? :-)
1-40 of 49Next »