Also das ist jetzt der Abgeänderte Code geht aber immernoch nich noch jemand Ideen ?
#include <TimerOne.h>
#include <IRremote.h>
#include <WaitWithoutDelay.h>
int RECV_PIN = 11; // IR-Receiver PIN
int led = 12; // Satus-LED PIN
int ledState = 0; // Zustand Status LED
int modus; // Modus für Interrupt-Abfrage
int ledr = 6; // RGB LED rot PIN
int ledg = 7; // RGB LED grün PIN
int ledb = 8; // RGB LED blau PIN
int SerialBuffer = 0;
int RedSum = 0; // Farbsumme von VLC über serial ROT
int GreenSum = 0; // Farbsumme von VLC über serial grün
int BlueSum = 0; // Farbsumme von VLC über serial Blau
int RedVal=1; // Variablen für Fader
int BlueVal=1; // "
int GreenVal=1; // "
int i=1; // Zählervariable für Fader
int fadespeed = 10; // Speed für Fade --> 1: extrem schnell
// --> 10: normal
// --> 100: extrem langsam
/////////////////////////////////////////////////////////////////////////////////////
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(ledr, OUTPUT); // Setzen der RGB LED Pins als Output
pinMode(ledg, OUTPUT); // Setzen der RGB LED Pins als Output
pinMode(ledb, OUTPUT); // Setzen der RGB LED Pins als Output
pinMode(led, OUTPUT); // Status-LED als Output setzen
Serial.begin(38400); // Serial Verbindung zu VLC
// Serial.begin(9600);
irrecv.enableIRIn(); // Start vom IR-Empfang
}
void leseIR(){
// Ständige Abfrage ob Wert von IR Empfangen, trotz LOOP
if (irrecv.decode(&results)){
switch (results.value) {
case 0xFF10EF: // Modus Fade (DIY 4)
modus = 1;
break;
case 0xFF906F: // Modus pcambi (DIY 5)
modus = 2;
break;
// DIY 1 FF30CF
// DIY 2 FBB04F
// DIY 3 FF708F
// DIY 4 FF10EF
// DIY 5 FF906F
// DIY 6 FF50AF
case 0xFF02FD: //Power
modus = 0;
setColor(0, 0, 0); // RGB LEDs ausschalten
break;
/////////////////////
//Standart RGB Remote
/////////////////////
case 0xFFA25D: //Blau 0,0,255
modus = 0;
setColor(0, 0, 255);
break;
case 0xFF1AE5: //Rot
modus = 0;
setColor(255, 0, 0);
break;
case 0xFF9A65://Grün
modus = 0;
setColor(0, 255, 0);
break;
case 0xFF22DD: //Weiss
modus = 0;
setColor(255, 255, 255);
break;
case 0xFF2AD5: //orange
modus = 0;
setColor(255, 165, 0);
break;
case 0xFFAA55://Grün mitrtel
modus = 0;
setColor(124, 252, 0);
break;
case 0xFF926D: //blau mittel
modus = 0;
setColor(92, 172, 238);
break;
case 0xFF12ED: //rosa
modus = 0;
setColor(255, 228, 196);
break;
} // Switch ENDE
} // Empfange IR ENDE
irrecv.resume(); // Receive the next value
} // Lese IR ENDE
void setColor (int red, int green, int blue) {
static WaitWithoutDelay localwait = WaitWithoutDelay(1000);
if(localwait.wait()) {
//Serial.println("setColor called");
// RGB LED: write inverted value for each color
analogWrite(ledr, 255 - red);
analogWrite(ledg, 255 - green);
analogWrite(ledb, 255 - blue);
}
}
///////////////////
/// Fade //////////
///////////////////
void fade(int Speed){
static WaitWithoutDelay localwait = WaitWithoutDelay(Speed);
if(localwait.wait()) {
analogWrite(ledr,255-RedVal);
analogWrite(ledb,255-BlueVal);
analogWrite(ledg,255-GreenVal);
RedVal =((i<255)*i)+((i>=255)*255)+((i>511)*(512-i))+((i>766)*(i-766))+((i>=1276)*(i-1276))+((i>1530)*(1530-i))+((i>1786)*(1786-i));
GreenVal =(i<256)*(1)+(i>255)*(i-255)+(i>510)*(510-i)+(i>1020)*(1020-i)+(i>1274)*(i-1274)+(i>1530)*(i-1531)+(i>1785)*(3571-(2*i));
BlueVal =(i<764)*(1)+(i>765)*(i-765)+(i>1020)*(1020-i)+(i>1786)*(1786-i);
if(i>2040){
i = 1;
}
i++;
}
} // Fade ENDE
void pcambi(){
////////////////
////////////////
static WaitWithoutDelay localwait = WaitWithoutDelay(500);
if(localwait.wait()) {
if(ledState==1){
digitalWrite(led, LOW); // Status LED AUS
ledState = 0;
}else{
digitalWrite(led, HIGH); // Status LED EIN
ledState = 1;
}
}
}
void loop() {
leseIR();
if(modus==1){ // Abfrage pb Modus:1 in Interrupt gesetzt
fade(fadespeed); // Starte Fade
}
if(modus==2){ // Abfrage pb Modus:2 in Interrupt gesetzt
pcambi(); // pcaMBI
}
if(modus==3){ // Abfrage pb Modus:3 in Interrupt gesetzt
}
} // LOOP Ende