/* * 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);}