I want to make a lithophane lamp with a fading animation for the LEDs. For that i have a 5050 LED strip and 3 mosfets to controll the color. When i want to do the fade, i first tried a while command inside the blynk_write function. However there the fade can not be stopped anymore, so i read about timer functions, so I tried this code. If I press the button now, it does nothing. Can anybody help there?
Thanks in advance.
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "X-xxx";
char ssid[] = "xxx";
char pass[] = "xxx";
BlynkTimer timer;
#define REDPIN D2
#define GREENPIN D1
#define BLUEPIN D0
int FADESPEED = 3;
int pinValue =0;
int SliderValue =3;
int StartDoTimer;
void setup()
{
// Debug console
Serial.begin(9600);
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);
Blynk.begin(auth, ssid, pass);
LEDfadeTimer = timer.setInterval(1000L, LEDfade);
timer.disable(LEDfadeTimer); // Turn StartDoTimer off
}
BLYNK_WRITE(V2)
{
SliderValue = param.asInt();
int FADESPEED = SliderValue;
}
BLYNK_WRITE(V1)
{
int pinValue = param.asInt();
if(param.asInt()==1)
{
timer.enable(LEDfadeTimer );
Serial.print("V1 IS ON");
}
else
{
Serial.print("V1 IS OFF ");
timer.disable(LEDfadeTimer );
}
}
void LEDfade(){
if (pinValue == 1){
int r, g, b;
// fade from blue to violet
for (r = 0; r < 1023; r++) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from violet to red
for (b = 1022; b > 0; b--) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from red to yellow
for (g = 0; g < 1023; g++) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
// fade from yellow to green
for (r = 1022; r > 0; r--) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from green to teal
for (b = 0; b < 1023; b++) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from teal to blue
for (g = 1022; g > 0; g--) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
}
}
void loop()
{
Blynk.run();
timer.run();
}