This will allow full RGB control of an RGB LED (aprox. 1.6 million colours). This is merely a proof of concept; real applications might be to connect and RGB LED srtip for lighting your room or your PC.
Parts list:
- Arduino UNO Rev3
- RGB LED (or RGB LED strip / other RGB display)
- IR remote & receiver
- 3 220R resistors
- Prototyping board (I used a prototyping shield as well)
- 6 jumper cables
Here I use the bottom two rows of digits on my remote (4-9) to control the intensity of each colour.
Teacher Notes
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Wiring
You may need to play around with the pins used. I had to change mine until I found some that work. I think there is a bug with the IR library I used; I will need to experiment more with this.
Step 2: Code
First, you will need to install the IR library: https://github.com/z3t0/Arduino-IRremote
Find the code here: https://gist.github.com/Marcel-Robitaille/bebb855812428b19bb2c
You may need to change the codes depending on your remote.
#include <./IRremote.h>
int pinR = 9; int pinG = 6; int pinB = 5; int pinSignal = 11;IRrecv irrecv(pinSignal); decode_results results;
long codes[6]= { 0xFD28D7, //4 0xFD18E7, //7 0xFDA857, //5 0xFD9867, //8 0xFD6897, //6 0xFD58A7 //9 }; int valR = 0; int valG = 0; int valB = 0;
void setup(){ Serial.begin(9600); irrecv.enableIRIn();
pinMode(pinR, OUTPUT); pinMode(pinG, OUTPUT); pinMode(pinB, OUTPUT);
}
void loop(){ if(irrecv.decode(&results)){ if(results.value == codes[0] && valR < 255){ valR++; }
else if(results.value == codes[1] && valR > 0){ valR--; }
else if(results.value == codes[2] && valG < 255){ valG++; }
else if(results.value == codes[3] && valG > 0){ valG--; }
else if(results.value == codes[4] && valB < 255){ valB++; }
else if(results.value == codes[5] && valB > 0){ valB--; } display(valR, valG, valB); Serial.print("Red: "); Serial.println(valR); Serial.print("Green: "); Serial.println(valG); Serial.print("Blue: "); Serial.println(valB); Serial.println(""); irrecv.resume(); } }
void display(int red, int green, int blue){ analogWrite(pinR, constrain(red, 0, 255)); analogWrite(pinG, constrain(green, 0, 255)); analogWrite(pinB, constrain(blue, 0, 255)); }

Participated in the
Full Spectrum Laser Contest 2016

Participated in the
Arduino All The Things! Contest
13 Discussions
1 year ago
Ik gebruik een common anode rgb led, wat moet ik aan het programma veranderen?
Mijn arduino is een arduino Nano, zou dit mijn probleem zijn, ik zie de kleuren niet veranderen
Can you help me please
Kind regards
2 years ago
it is not working
I think the remote control or the reseiver
Reply 2 years ago
It is impossible for me to help you without more information. Double check your wiring. Make sure everything compiled correctly.
2 years ago
i get an error. exit status 1
error compiling for board
Reply 2 years ago
Make sure you have the correct board selected in tools.
3 years ago
this is usefull thanx for share this
Reply 3 years ago
Glad you found it useful.
3 years ago
Great idea, great explanation!
Reply 3 years ago
Thanks mom
3 years ago
Awesome tutorial, very professional.
Reply 3 years ago
Thanks.
3 years ago
Very cool idea. Nice and simple too!
Reply 3 years ago
Thank you. If you liked it, please vote for me in the "Arduino all the things" contest.