Implemented power control
This commit is contained in:
@@ -44,7 +44,11 @@ public:
|
|||||||
void run()
|
void run()
|
||||||
{
|
{
|
||||||
(*iter)->run();
|
(*iter)->run();
|
||||||
FastLED.show();
|
}
|
||||||
|
|
||||||
|
void poweroff()
|
||||||
|
{
|
||||||
|
fill_solid(&leds[0], NUM_LEDS, CRGB::Black);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
60
src/main.cpp
60
src/main.cpp
@@ -15,6 +15,7 @@ LedController ledController;
|
|||||||
|
|
||||||
ESP8266WebServer server(80);
|
ESP8266WebServer server(80);
|
||||||
|
|
||||||
|
bool power = true;
|
||||||
bool rotatePattern = true;
|
bool rotatePattern = true;
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
@@ -48,8 +49,10 @@ void setup()
|
|||||||
"<div class=\"container\">"
|
"<div class=\"container\">"
|
||||||
"<h1>Hello, world!</h1>"
|
"<h1>Hello, world!</h1>"
|
||||||
"<p>"
|
"<p>"
|
||||||
"<a href=\"nextPattern\" class=\"softLink\">Next pattern</a>"
|
"<a href=\"setPower?val=true\" id=\"enablePower\" class=\"softLink\">Turn LEDs on</a> "
|
||||||
"<a href=\"setPatternRotate?val=true\" id=\"enableRotate\" class=\"softLink\">Enable automatic pattern rotate</a>"
|
"<a href=\"setPower?val=false\" id=\"disablePower\" class=\"softLink\">Turn LEDs off</a> "
|
||||||
|
"<a href=\"nextPattern\" id=\"nextPattern\" class=\"softLink\">Next pattern</a> "
|
||||||
|
"<a href=\"setPatternRotate?val=true\" id=\"enableRotate\" class=\"softLink\">Enable automatic pattern rotate</a> "
|
||||||
"<a href=\"setPatternRotate?val=false\" id=\"disableRotate\" class=\"softLink\">Disable automatic pattern rotate</a>"
|
"<a href=\"setPatternRotate?val=false\" id=\"disableRotate\" class=\"softLink\">Disable automatic pattern rotate</a>"
|
||||||
"</p>"
|
"</p>"
|
||||||
|
|
||||||
@@ -87,13 +90,21 @@ void setup()
|
|||||||
"xhr.onload = function() {"
|
"xhr.onload = function() {"
|
||||||
"var parsed = JSON.parse(xhr.responseText);"
|
"var parsed = JSON.parse(xhr.responseText);"
|
||||||
|
|
||||||
"if (parsed.autoRotate) {"
|
"function setHidden(element, hidden) {"
|
||||||
"$('#enableRotate').addClass('hidden');"
|
"if (hidden) {"
|
||||||
"$('#disableRotate').removeClass('hidden');"
|
"element.addClass('hidden');"
|
||||||
"} else {"
|
"} else {"
|
||||||
"$('#enableRotate').removeClass('hidden');"
|
"element.removeClass('hidden');"
|
||||||
"$('#disableRotate').addClass('hidden');"
|
|
||||||
"}"
|
"}"
|
||||||
|
"}"
|
||||||
|
|
||||||
|
"setHidden($('#enablePower'), parsed.power);"
|
||||||
|
"setHidden($('#disablePower'), !parsed.power);"
|
||||||
|
"setHidden($('#nextPattern'), !parsed.power);"
|
||||||
|
"setHidden($('#enableRotate'), !parsed.power || parsed.autoRotate);"
|
||||||
|
"setHidden($('#disableRotate'), !parsed.power || !parsed.autoRotate);"
|
||||||
|
"setHidden($('#patternSelect'), !parsed.power);"
|
||||||
|
"setHidden($('#brightness'), !parsed.power);"
|
||||||
|
|
||||||
"var select = $('#patternSelect');"
|
"var select = $('#patternSelect');"
|
||||||
"select.empty();"
|
"select.empty();"
|
||||||
@@ -145,6 +156,10 @@ void setup()
|
|||||||
}
|
}
|
||||||
str += "],";
|
str += "],";
|
||||||
|
|
||||||
|
str += "\"power\":";
|
||||||
|
str += power ? "true" : "false";
|
||||||
|
str += ",";
|
||||||
|
|
||||||
str += "\"autoRotate\":";
|
str += "\"autoRotate\":";
|
||||||
str += rotatePattern ? "true" : "false";
|
str += rotatePattern ? "true" : "false";
|
||||||
str += ",";
|
str += ",";
|
||||||
@@ -189,6 +204,31 @@ void setup()
|
|||||||
server.send(200, "text/html", "ok");
|
server.send(200, "text/html", "ok");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
server.on("/setPower", HTTP_GET, []()
|
||||||
|
{
|
||||||
|
const String *val = nullptr;
|
||||||
|
|
||||||
|
for (int i = 0; i < server.args(); i++)
|
||||||
|
if (server.argName(i) == "val")
|
||||||
|
val = &server.arg(i);
|
||||||
|
|
||||||
|
if (!val)
|
||||||
|
{
|
||||||
|
server.send(400, "text/html", "val missing");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*val != "true" && *val != "false")
|
||||||
|
{
|
||||||
|
server.send(400, "text/html", "invalid val");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
power = *val == "true";
|
||||||
|
|
||||||
|
server.send(200, "text/html", "ok");
|
||||||
|
});
|
||||||
|
|
||||||
server.on("/setPatternRotate", HTTP_GET, []()
|
server.on("/setPatternRotate", HTTP_GET, []()
|
||||||
{
|
{
|
||||||
const String *val = nullptr;
|
const String *val = nullptr;
|
||||||
@@ -247,10 +287,14 @@ void loop()
|
|||||||
{
|
{
|
||||||
EVERY_N_MILLISECONDS(20)
|
EVERY_N_MILLISECONDS(20)
|
||||||
{
|
{
|
||||||
|
if (power)
|
||||||
ledController.run();
|
ledController.run();
|
||||||
|
else
|
||||||
|
ledController.poweroff();
|
||||||
|
FastLED.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rotatePattern)
|
if (power && rotatePattern)
|
||||||
{
|
{
|
||||||
EVERY_N_SECONDS(10)
|
EVERY_N_SECONDS(10)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user