/*
CAMP-ARDUINO
Lesson #8
Very Basic Remote Control Unit
0.01 - Very Basic setup
*********************
* 01 * 0xA2 * Power *
* 02 * 0xE2 * Menu *
* 03 * 0x22 * Test *
* 04 * 0x02 * + *
* 05 * 0xC2 * <- *
* 06 * 0xE0 * << *
* 07 * 0xA8 * |> *
* 08 * 0x90 * >> *
* 09 * 0x68 * 0 *
* 10 * 0x98 * - *
* 11 * 0xB0 * C *
* 12 * 0x30 * 1 *
* 13 * 0x18 * 2 *
* 14 * 0x7A * 3 *
* 15 * 0x10 * 4 *
* 16 * 0x38 * 5 *
* 17 * 0x5A * 6 *
* 18 * 0x42 * 7 *
* 18 * 0x4A * 8 *
* 18 * 0x52 * 9 *
*********************
*/
float ver = 0.01;
#include <IRremote.h>
//#include <IRremote.hpp>
#define IR_RECEIVE_PIN 2
#define Rled 11
#define Gled 10
#define Bled 9
#define rgbR 6
#define rgbG 5
#define rgbB 3
int data;
int rVal;
int gVal;
int bVal;
//int fsdt = 2;
int fldt = 1000; //FadeFX long delay time
bool RledStt=0;
volatile bool power = 0;
volatile bool fadeFX = 0;
volatile bool rgbFX = 0;
volatile bool blinkFX = 0;
volatile bool blufadeFX = 0;
volatile int blinkDT = 500;
volatile int fsdt = 2; //FadeFX short delay time
void setup()
{
Serial.begin(115200);
Serial.println("CAMP - ARDUINO");
Serial.print("Very Basic RCU version: ");
Serial.println(ver);
pinMode(Rled, OUTPUT);
pinMode(Gled, OUTPUT);
pinMode(Bled, OUTPUT);
pinMode(rgbR, OUTPUT);
pinMode(rgbG, OUTPUT);
pinMode(rgbB, OUTPUT);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the receiver
Serial.println("Setup done, starting loop.");
}
void loop() {
if (IrReceiver.decode()) {
data = IrReceiver.decodedIRData.command;
IrReceiver.resume(); // Enable receiving of the next value
}
switch(data){
//Power
case 0xA2:
power =! power;
data = 0x00;
break;
//+
case 0x02:
data = 0x00;
if(blinkFX==1){
blinkDT -= 100;
if(blinkDT < 100)blinkDT=0;
Serial.println(blinkDT);
}
if(blufadeFX==1){
fsdt -= 1;
if(fsdt < 1)fsdt=0;
Serial.println(fsdt);
}
break;
//-
case 0x98:
data = 0x00;
if(blinkFX==1){
blinkDT += 100;
if(blinkDT > 2000)blinkDT=2000;
Serial.println(blinkDT);
}
if(blufadeFX==1){
fsdt += 1;
if(fsdt > 15) fsdt=15;
Serial.println(fsdt);
}
break;
//1
case 0x30:
rVal = 255;
gVal = 0;
bVal = 0;
data = 0x00;
break;
//2
case 0x18:
rVal = 0;
gVal = 255;
bVal = 0;
data = 0x00;
break;
//3
case 0x7A:
rVal = 0;
gVal = 0;
bVal = 255;
data = 0x00;
break;
//4
case 0x10:
rVal = 255;
gVal = 255;
bVal = 0;
data = 0x00;
break;
//5
case 0x38:
rVal = 0;
gVal = 255;
bVal = 255;
data = 0x00;
break;
//6
case 0x5A:
rVal = 255;
gVal = 0;
bVal = 255;
data = 0x00;
break;
//0
case 0x68:
rVal = 255;
gVal = 255;
bVal = 255;
data = 0x00;
break;
}
if(power){
analogWrite(rgbR, rVal);
analogWrite(rgbG, gVal);
analogWrite(rgbB, bVal);
}
if(!power){
rVal = 0;
gVal = 0;
bVal = 0;
analogWrite(rgbR, rVal);
analogWrite(rgbG, gVal);
analogWrite(rgbB, bVal);
}
digitalWrite(Rled, power);
}
if(blufadeFX){
for(int i =0; i < 255; i ++){
analogWrite(Bled, i);
delay(fsdt);
}
digitalWrite(Bled, HIGH);
delay(fldt);
for(int i =0; i < 255; i ++){
analogWrite(Bled, 255 - i);
delay(fsdt);
}
digitalWrite(Bled, LOW);
delay(fldt);
}
if(rgbFX){
digitalWrite(rgbR, HIGH);
digitalWrite(rgbG, LOW);
digitalWrite(rgbB, LOW);
delay(fldt);
digitalWrite(rgbR, LOW);
digitalWrite(rgbG, HIGH);
digitalWrite(rgbB, LOW);
delay(fldt);
digitalWrite(rgbR, LOW);
digitalWrite(rgbG, LOW);
digitalWrite(rgbB, HIGH);
delay(fldt);
}
if(!rgbFX){
digitalWrite(rgbR, LOW);
digitalWrite(rgbG, LOW);
digitalWrite(rgbB, LOW);
//Serial.println("FadeLade - OFF");
}
if(blinkFX){
digitalWrite(Gled, HIGH);
delay(blinkDT);
digitalWrite(Gled, LOW);
delay(blinkDT);
}
if(!blinkFX){
digitalWrite(Gled, LOW);
}