/* * RGB LED Band ansteuern mittels IR Fernbedienung * Arduino als Ersatzgerät des RGB Controllers * Version 1.1 14.12.2018 * Copyright 2018 Daniel Dzierzon * IR Receiver an Pin 11 *  */
#include <IRremote.h>int Taste = 0;int Funktion = 0;int RECV_PIN = 11;
#define LR 6 //LED Rot an Pin 6 PWM#define LB 10 //LED Blau an Pin 10 PWM#define LG 9 //LED Grün an Pin 9 PWM
uint8_t HLR = 0;uint8_t HLB = 120;uint8_t HLG = 120;
int F21 = 0;int F21diff = 2000;int F22 = 0;int F22diff = 500;int F23 = 0;int F23diff = 100;int F24 = 0;
long alteZeit = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){  Serial.begin(9600);  irrecv.enableIRIn(); // Start the receiver  pinMode(LR, OUTPUT);  pinMode(LB, OUTPUT);  pinMode(LG, OUTPUT);
  analogWrite(LR, HLR);   analogWrite(LB, HLB);   analogWrite(LG, HLG);         }
void Sonderprogramm(){  if(Funktion == 21)  {    if(millis() - alteZeit >= F21diff)    {      //Serial.println(F21diff);      alteZeit = millis();      F21++;    }    switch(F21)    {      case 0: HLR = 255; HLB = 0; HLG = 0;break;      case 1: HLR = 0; HLB = 255; HLG = 0;break;      case 2: HLR = 0; HLB = 0; HLG = 255;break;      case 3: HLR = 255; HLB = 255; HLG = 0;break;      case 4: HLR = 255; HLB = 0; HLG = 255;break;      case 5: HLR = 255; HLB = 255; HLG = 255;break;      case 6: HLR = 200; HLB = 128; HLG = 0;break;      case 7: F21 = 0;break;    }  }  if(Funktion == 22)  {    if(millis() - alteZeit >= F22diff)    {      //Serial.println(F22diff);      alteZeit = millis();      F22++;    }    switch(F22)    {      case 0: HLR = 255; HLB = 255; HLG = 0;break;      case 1: HLR = 0; HLB = 255; HLG = 0;break;      case 2: HLR = 0; HLB = 0; HLG = 255;break;      case 3: HLR = 255; HLB = 255; HLG = 0;break;      case 4: HLR = 255; HLB = 0; HLG = 255;break;      case 5: HLR = 255; HLB = 255; HLG = 255;break;      case 6: HLR = 0; HLB = 128; HLG = 200;break;      case 7: HLR = 255; HLB = 128; HLG = 0;break;      case 8: HLR = 50; HLB = 40; HLG = 128;break;      case 9: HLR = 0; HLB = 128; HLG = 130;break;      case 10: HLR = 80; HLB = 240; HLG = 255;break;      case 11: HLR = 40; HLB = 255; HLG = 128;break;      case 12: HLR = 255; HLB = 0; HLG = 0;break;      case 13: F22 = 0;break;    }  }  if(Funktion == 23)  {    if(millis() - alteZeit >= F23diff)    {      //Serial.println(F23diff);      alteZeit = millis();      /*Serial.print("Rot ");      Serial.println(HLR);      Serial.print("Blau ");      Serial.println(HLB);      Serial.print("Grün ");      Serial.println(HLG);*/      if(F23 == 0)      {        HLR = 255;        HLB = 0;        HLG = 0;        F23++;      }            else if(F23 == 1)      {        if(HLR > 3)          HLR -= 2;        if(HLB <= 253)          HLB += 2;        HLG = 0;        if(HLB > 250)        {          F23++;        }      }      else if(F23 == 2)      {        if(HLB > 3)          HLB -= 2;        if(HLG <= 253)          HLG += 2;        HLR = 0;        if(HLG > 250)        {          F23++;        }      }      else if(F23 == 3)      {        HLB = 0;        if(HLG > 3)          HLG -= 2;        if(HLR <= 253)        HLR += 2;        if(HLR > 250)        {          F23 = 0;        }      }    }     }  analogWrite(LR, HLR);  analogWrite(LB, HLB);  analogWrite(LG, HLG);}void Programm(){    switch(Taste)  {    case 0: Funktion = 0;break;    case 1:if( Funktion == 0)    {            if(HLR > 0 && HLR < 250)                HLR += 5;            if(HLB > 0 && HLB < 250)            HLB += 5;            if(HLG > 0 && HLG < 250)            HLG += 5;    }    else if(Funktion == 21&& F21diff < 15000)    {      F21diff += 200;    }     else if(Funktion == 22&& F22diff < 2000)    {      F22diff += 50;    }    else if(Funktion == 23&& F23diff < 15000)    {      F23diff += 200;    }          break;    case 2:    if( Funktion == 0)    {            if(HLR > 5 && HLR <= 255)            HLR -= 5;            if(HLB > 5 && HLB <= 255)            HLB -= 5;            if(HLG > 5 && HLG <= 255)            HLG -= 5;    }    else if(Funktion == 21 && F21diff > 700)    {      F21diff -= 200;    }     else if(Funktion == 22 && F22diff > 60)    {      F22diff -= 50;    }    else if(Funktion == 23 && F23diff > 200)    {      F23diff -= 50;    }         break;    case 3: HLR = 0; HLB = 0; HLG = 0;Funktion = 0;break;    case 4: HLR = 0; HLB = 120; HLG = 120;Funktion = 0;break;    case 5: HLR = 255; HLB = 0; HLG = 0;Funktion = 0;break;    case 6: HLR = 235; HLB = 0; HLG = 10;Funktion = 0;break;    case 7: HLR = 220; HLB = 0; HLG = 30;Funktion = 0;break;    case 8: HLR = 200; HLB = 0; HLG = 55;Funktion = 0;break;    case 9: HLR = 200; HLB = 0; HLG = 100;Funktion = 0;break;    case 10: HLR = 0; HLB = 0; HLG = 255;Funktion = 0;break;    case 11: HLR = 0; HLB = 10; HLG = 235;Funktion = 0;break;    case 12: HLR = 0; HLB = 30; HLG = 220;Funktion = 0;break;    case 13: HLR = 0; HLB = 55; HLG = 200;Funktion = 0;break;    case 14: HLR = 0; HLB = 100; HLG = 200;Funktion = 0;break;    case 15: HLR = 0; HLB = 255; HLG = 0;Funktion = 0;break;    case 16: HLR = 10; HLB = 235; HLG = 0;Funktion = 0;break;    case 17: HLR = 30; HLB = 220; HLG = 0;Funktion = 0;break;    case 18: HLR = 55; HLB = 200; HLG = 0;Funktion = 0;break;    case 19: HLR = 100; HLB = 200; HLG = 0;Funktion = 0;break;    case 20: HLR = 160; HLB = 160; HLG = 160;Funktion = 0;break;    case 21: Funktion = 21;break;    case 22: Funktion = 22;break;    case 23: Funktion = 23;break;    case 24: HLR = analogRead(A1); HLB = HLR / 2; HLG = HLB +50;Funktion = 24;break;      }  }
void loop() {  Sonderprogramm();  if (irrecv.decode(&results)) {    Serial.println(results.value, HEX);    if(results.value == 0xF700FF)    {      Taste = 1;    }    else if(results.value == 0xF7807F)    {      Taste = 2;    }    else if(results.value == 0xF740BF)    {      Taste = 3;    }    else if(results.value == 0xF7C03F)    {      Taste = 4;    }    else if(results.value == 0xF720DF)    {      Taste = 5;    }    else if(results.value == 0xF710EF)    {      Taste = 6;    }    else if(results.value == 0xF730CF)    {      Taste = 7;    }    else if(results.value == 0xF708F7)    {      Taste = 8;    }    else if(results.value == 0xF728D7)    {      Taste = 9;    }    else if(results.value == 0xF7A05F)    {      Taste = 10;    }    else if(results.value == 0xF7906F)    {      Taste = 11;    }    else if(results.value == 0xF7B04F)    {      Taste = 12;    }    else if(results.value == 0xF78877)    {      Taste = 13;    }    else if(results.value == 0xF7A857)    {      Taste = 14;    }    else if(results.value == 0xF7609F)    {      Taste = 15;    }        else if(results.value == 0xF750AF)    {      Taste = 16;    }    else if(results.value == 0xF7708F)    {       Taste = 17;    }    else if(results.value == 0xF748B7)    {       Taste = 18;    }        else if(results.value == 0xF76897)    {       Taste = 19;    }    else if(results.value == 0xF7E01F)    {       Taste = 20;    }    else if(results.value == 0xF7D02F)    {       Taste = 21;    }    else if(results.value == 0xF7F00F)    {       Taste = 22;    }    else if(results.value == 0xF7C837)    {       Taste = 23;    }    else if(results.value == 0xF7E817)    {       Taste = 24;    }   Programm();    irrecv.resume(); // Receive the next value  }  delay(100);}