Lord_Akil_Imenand
Published © GPL3+

IR Remote RGB LED Control

Easily use an IR Remote to control a single RGB LED or an RGB strip.

BeginnerProtip6,534
IR Remote RGB LED Control

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
RGB Diffused Common Cathode
RGB Diffused Common Cathode
×1
5 mm LED: Yellow
5 mm LED: Yellow
×1
DFRobot IR Remote and Sensor
×1
Resistor 221 ohm
Resistor 221 ohm
×4

Story

Read more

Schematics

Circuit Diagram

An easy way to look at the pin setup. You IR sensor module may be different, so make sure to connect the ground to ground, the vcc to 5v, and the output to pin eleven(11).

Code

The Code

Arduino
Paste this into the Arduino code editor. Make sure to install the library IRremote if you have not already.
/*    The following program was written and created by O*** Ro******m - O'*****r, known anonomously by the username Lord Akil Imenand.
 *    The following code is only to be used for educational and private purposes.
 *    The pin setup is as follows:
 *    IR Reciever - Arduino:
 *    G - Grnd
 *    R - 5v
 *    Y - Digital 11(Eleven)
 *    Arduino - RGB LED:
 *    Grnd - cathode(long leg)
 *    Digital 2 - red leg (Alone next to the cathode)
 *    Digital 3 - green leg (Opposite the red leg, next to the cathode)
 *    Digital 4 - blue leg (Only one left)
 *    Arduino - Warning LED:
 *    Grnd - cathode(short leg)
 *    Digital 5 - anode (long leg)
 *    
 *    The controls are as follows:
 *    On button: white
 *    Func/Stop button: off
 *    Vol + button: red on
 *    Vol - button: red off
 *    Fast Forward button: green on
 *    Reverse button: green off
 *    Up button: blue on
 *    Down button: blue off
 *    EQ button: white
 *    1: red
 *    2: green
 *    3: blue
 *    4: yellow
 *    5: purple
 *    6: teal
 *    7: red off
 *    8: green off
 *    9: blue off
 *    The pause, 0, and ST/Rept buttons don't do anything.
 */


#include "IRremote.h"

int receiver = 11;

IRrecv irrecv(receiver);
decode_results results;

void translateIR()
{

  switch(results.value)

  {
  case 0xFFA25D: digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH);  break;
  case 0xFFE21D: digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW);  break;
  case 0xFF629D: digitalWrite(2, HIGH);  break;
  case 0xFF22DD: digitalWrite(3, LOW);  break;
  case 0xFF02FD: digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); delay(20); digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); break;
  case 0xFFC23D: digitalWrite(3, HIGH);  break;
  case 0xFFE01F: digitalWrite(4, LOW);  break;
  case 0xFFA857: digitalWrite(2, LOW);  break;
  case 0xFF906F: digitalWrite(4, HIGH);  break;
  case 0xFF9867: digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH);  break;
  case 0xFFB04F: digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); delay(20); digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); break;
  case 0xFF6897: digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); delay(20); digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); break;
  case 0xFF30CF: digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW);  break;
  case 0xFF18E7: digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW);  break;
  case 0xFF7A85: digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH);  break;
  case 0xFF10EF: digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, LOW);  break;
  case 0xFF38C7: digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, HIGH);  break;
  case 0xFF5AA5: digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH);  break;
  case 0xFF42BD: digitalWrite(2, LOW);  break;
  case 0xFF4AB5: digitalWrite(3, LOW);  break;
  case 0xFF52AD: digitalWrite(4, LOW);  break;
  case 0xFFFFFFFF: digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); delay(20); digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); break;

  default: 
    digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW); delay(20); digitalWrite(5, HIGH); delay(20); digitalWrite(5, LOW);

  }// End Case

  delay(400); //How long to wait before giving repeat signal


} //END translateIR
void setup()
{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode"); 
  irrecv.enableIRIn();
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);

}


void loop()
{
  if (irrecv.decode(&results))

  {
    translateIR(); 
    irrecv.resume();
  }  
}

Credits

Lord_Akil_Imenand
1 project • 0 followers

Comments