Hello!
I have a problem with the timers… I have started the timer with an function with is called by an UDP Request. Another UDP Request will stop the timer, but after a short time it restarts automaticaly…
Can everone help me? Here is the code witch is called by the timer:
void fadingRGB() {
fade2Color(1,255,255,1); // red
delay(fadingTime);
fade2Color(255,1,255,1); // green
delay(fadingTime);
fade2Color(255,255,1,1); // blue
delay(fadingTime);
}
int getMax(int a, int b, int c){
if(a>=b) {
if (a>=c){
return a;
} else {
return c;
}
} else {
if (b>=c){
return b;
} else {
return c;
}
}
}
// Returns difference of 2 int
int getDiff(int a, int b){
if(a>=b) {
return a-b;
} else {
return b-a;
}
}
void fade2Color(int redTo, int greenTo, int blueTo, int speedVal){
int redDiff = getDiff(redIs, redTo);
int greenDiff = getDiff(greenIs, greenTo);
int blueDiff = getDiff(blueIs, blueTo);
int maxRange = getMax(redDiff,greenDiff,blueDiff);
/* sorry futur-me for this confusing code */
for (int i=1; i<maxRange; i++){
if (redIs < redTo){
redIs += 1;
} else if (redIs > redTo){
redIs -= 1;
} else {
redIs = redTo;
}
if (greenIs < greenTo){
greenIs += 1;
} else if (greenIs > greenTo){
greenIs -= 1;
} else {
greenIs = blueTo;
}
if (blueIs < blueTo){
blueIs += 1;
} else if (blueIs > blueTo){
blueIs -= 1;
} else {
blueIs = blueTo;
}
analogWrite(redPWM, redIs);
analogWrite(greenPWM, greenIs);
analogWrite(bluePWM_LEDDimmer, blueIs);
delay(speedVal);
}
}
EDIT: Sometimes it is working… but mostly don’t.
best greetings!