From 27ed742ebffcd84b60777bc8ac8b3812e0e986e3 Mon Sep 17 00:00:00 2001 From: Daniel Brunner Date: Sun, 19 May 2019 21:37:33 +0200 Subject: [PATCH] Added new pattern plasma --- platformio.ini | 2 +- platformio.pro | 13 ++++---- src/ledcontroller.h | 7 ++-- src/main.cpp | 17 +++++++++- src/patterns/plasmapattern.h | 62 ++++++++++++++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 src/patterns/plasmapattern.h diff --git a/platformio.ini b/platformio.ini index 201a996..4fa4a6d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -8,7 +8,7 @@ ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html -[env:d1_minid1_mini] +[env:d1_mini] platform = espressif8266 board = d1_mini framework = arduino diff --git a/platformio.pro b/platformio.pro index 6ab505d..692b389 100644 --- a/platformio.pro +++ b/platformio.pro @@ -9,7 +9,7 @@ INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/ INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/cores/esp8266" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/variants/generic" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/variants/d1_mini" INCLUDEPATH += "$${HOMEDIR}/LedController/lib/FastLED" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src" @@ -49,13 +49,13 @@ INCLUDEPATH += "$${HOMEDIR}/LedController/src" DEFINES += "PLATFORMIO=30603" DEFINES += "ESP8266" DEFINES += "ARDUINO_ARCH_ESP8266" -DEFINES += "ARDUINO_ESP8266_ESP01" +DEFINES += "ARDUINO_ESP8266_WEMOS_D1MINI" DEFINES += "F_CPU=80000000L" DEFINES += "__ets__" DEFINES += "ICACHE_FLASH" DEFINES += "ARDUINO=10805" -DEFINES += "ARDUINO_BOARD="PLATFORMIO_ESP01"" -DEFINES += "FLASHMODE_QIO" +DEFINES += "ARDUINO_BOARD="PLATFORMIO_D1_MINI"" +DEFINES += "FLASHMODE_DIO" DEFINES += "LWIP_OPEN_SRC" DEFINES += "TCP_MSS=536" DEFINES += "LWIP_FEATURES=1" @@ -64,14 +64,15 @@ DEFINES += "VTABLES_IN_FLASH" OTHER_FILES += platformio.ini +HEADERS += src/pattern.h HEADERS += src/ledsettings.h HEADERS += src/ledcontroller.h -HEADERS += src/pattern.h SOURCES += src/main.cpp HEADERS += src/patterns/confettipattern.h HEADERS += src/patterns/fire2012pattern.h HEADERS += src/patterns/sineleonpattern.h HEADERS += src/patterns/rainbowpattern.h HEADERS += src/patterns/jugglepattern.h -HEADERS += src/patterns/bpmpattern.h HEADERS += src/patterns/rainbowwithglitterpattern.h +HEADERS += src/patterns/bpmpattern.h +HEADERS += src/patterns/plasmapattern.h diff --git a/src/ledcontroller.h b/src/ledcontroller.h index 421c714..f64df56 100644 --- a/src/ledcontroller.h +++ b/src/ledcontroller.h @@ -13,6 +13,7 @@ #include "patterns/jugglepattern.h" #include "patterns/bpmpattern.h" #include "patterns/fire2012pattern.h" +#include "patterns/plasmapattern.h" FASTLED_USING_NAMESPACE @@ -68,8 +69,9 @@ public: m_juggle(leds), m_bpm(leds), m_fire2012(leds), + m_plasma(leds), m_rgbtest(leds), - patterns { &m_rainbow, &m_rainbowWithGlitter, &m_confetti, &m_sineleon, &m_juggle, &m_bpm, &m_fire2012, &m_rgbtest }, + patterns { &m_rainbow, &m_rainbowWithGlitter, &m_confetti, &m_sineleon, &m_juggle, &m_bpm, &m_fire2012, &m_plasma, &m_rgbtest }, iter(patterns.begin()) { controller.setCorrection(TypicalLEDStrip); @@ -103,10 +105,11 @@ private: JugglePattern m_juggle; BpmPattern m_bpm; Fire2012Pattern m_fire2012; + PlasmaPattern m_plasma; RGBTest m_rgbtest; public: - using PatternContainer = std::array; + using PatternContainer = std::array; const PatternContainer patterns; PatternContainer::const_iterator iter; }; diff --git a/src/main.cpp b/src/main.cpp index cc016fb..4470971 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,6 +14,7 @@ constexpr auto WIFI_PASSWD = "Passwort_123"; LedController ledController; ESP8266WebServer server(80); +WiFiClient m_client; bool power = true; bool rotatePattern = true; @@ -138,7 +139,7 @@ void setup() server.on("/update", HTTP_GET, []() { server.sendHeader("Connection", "close"); server.send(200, "text/html", - "
" + "" "" "" "
"); @@ -174,6 +175,20 @@ void setup() yield(); }); + server.on("/reboot", HTTP_GET, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/html", + "
" + "" + "
"); + }); + + server.on("/reboot", HTTP_POST, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/plain", "OK"); + ESP.restart(); + }); + server.on("/status", HTTP_GET, []() { server.sendHeader("Connection", "close"); diff --git a/src/patterns/plasmapattern.h b/src/patterns/plasmapattern.h new file mode 100644 index 0000000..179dc36 --- /dev/null +++ b/src/patterns/plasmapattern.h @@ -0,0 +1,62 @@ +#pragma once + +#include "pattern.h" + +#include + +#include "ledsettings.h" +#include "ledcontroller.h" + +FASTLED_USING_NAMESPACE + +class PlasmaPattern : public Pattern { + // Use qsuba for smooth pixel colouring and qsubd for non-smooth pixel colouring + template + auto qsubd(T1 x, T2 b) + { + return (x > b) ? b : 0; // Digital unsigned subtraction macro. if result <0, then => 0. Otherwise, take on fixed value. + } + + template + auto qsuba(T1 x, T2 b) + { + return (x > b) ? x - b : 0; // Analog Unsigned subtraction macro. if result <0, then => 0 + } + +public: + using Pattern::Pattern; + + const char *name() const override + { + return "plasma"; + } + + void run() override + { + int thisPhase = beatsin8(6,-64,64); // Setting phase change for a couple of waves. + int thatPhase = beatsin8(7,-64,64); + + for (int k=0; k