diff --git a/platformio.ini b/platformio.ini index 4b30716..bb02cf3 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:esp32dev] -platform = espressif32 -board = esp32dev +[env:esp01] +platform = espressif8266 +board = esp01 framework = arduino diff --git a/platformio.pro b/platformio.pro index 18ecaef..79c43d1 100644 --- a/platformio.pro +++ b/platformio.pro @@ -5,114 +5,72 @@ else { HOMEDIR += $$(HOME) } -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mbedtls" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mdns" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/micro-ecc" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mqtt" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/newlib" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nghttp" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nvs_flash" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/openssl" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protobuf-c" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protocomm" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/pthread" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/sdmmc" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/smartconfig_ack" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/soc" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spi_flash" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spiffs" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcp_transport" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcpip_adapter" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ulp" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/unity" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/vfs" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wear_levelling" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wifi_provisioning" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wpa_supplicant" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/xtensa-debug-module" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32-camera" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-face" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fb_gfx" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/cores/esp32" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/variants/esp32" -INCLUDEPATH += "$${HOMEDIR}/test/lib/FastLED" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/AzureIoT/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/FS/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SD/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Update/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/xtensa-esp32-elf" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include" -INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include-fixed" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include" +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}/LedController/lib/FastLED" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPI" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Wire" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/xtensa-lx106-elf" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include-fixed" +INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/tool-unity" -INCLUDEPATH += "$${HOMEDIR}/test/include" -INCLUDEPATH += "$${HOMEDIR}/test/src" +INCLUDEPATH += "$${HOMEDIR}/LedController/include" +INCLUDEPATH += "$${HOMEDIR}/LedController/src" DEFINES += "PLATFORMIO=30603" -DEFINES += "ARDUINO_ESP32_DEV" -DEFINES += "ESP32" -DEFINES += "ESP_PLATFORM" -DEFINES += "F_CPU=240000000L" -DEFINES += "HAVE_CONFIG_H" -DEFINES += "MBEDTLS_CONFIG_FILE="mbedtls/esp_config.h"" +DEFINES += "ESP8266" +DEFINES += "ARDUINO_ARCH_ESP8266" +DEFINES += "ARDUINO_ESP8266_ESP01" +DEFINES += "F_CPU=80000000L" +DEFINES += "__ets__" +DEFINES += "ICACHE_FLASH" DEFINES += "ARDUINO=10805" -DEFINES += "ARDUINO_ARCH_ESP32" -DEFINES += "ARDUINO_VARIANT="esp32"" -DEFINES += "ARDUINO_BOARD="Espressif ESP32 Dev Module"" +DEFINES += "ARDUINO_BOARD="PLATFORMIO_ESP01"" +DEFINES += "FLASHMODE_QIO" +DEFINES += "LWIP_OPEN_SRC" +DEFINES += "TCP_MSS=536" +DEFINES += "LWIP_FEATURES=1" +DEFINES += "LWIP_IPV6=0" +DEFINES += "VTABLES_IN_FLASH" OTHER_FILES += platformio.ini SOURCES += src/main.cpp +HEADERS += src/ledcontroller.h +HEADERS += src/pattern.h +HEADERS += src/patterns/rainbowpattern.h +HEADERS += src/patterns/rainbowwithglitterpattern.h +HEADERS += src/patterns/confettipattern.h +HEADERS += src/patterns/sineleonpattern.h +HEADERS += src/patterns/jugglepattern.h +HEADERS += src/patterns/bpmpattern.h +HEADERS += src/patterns/fire2012pattern.h diff --git a/src/ledcontroller.h b/src/ledcontroller.h new file mode 100644 index 0000000..d441eb8 --- /dev/null +++ b/src/ledcontroller.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include + +#include + +#include "patterns/rainbowpattern.h" +#include "patterns/rainbowwithglitterpattern.h" +#include "patterns/confettipattern.h" +#include "patterns/sineleonpattern.h" +#include "patterns/jugglepattern.h" +#include "patterns/bpmpattern.h" +#include "patterns/fire2012pattern.h" + +class LedController { +public: + +private: + static constexpr auto NUM_LEDS = 100; + + std::array leds; + + RainbowPattern m_rainbow; + RainbowWithGlitterPattern m_rainbowWithGlitter; + ConfettiPattern m_confetti; + SineleonPattern m_sineleon; + JugglePattern m_juggle; + BpmPattern m_bpm; + Fire2012Pattern m_fire2012; + + using PatternContainer = std::array; +}; diff --git a/src/main.cpp b/src/main.cpp index d3d7867..857e4f8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,26 +3,38 @@ #include -#include -#include +#include +#include #include +#include "ledcontroller.h" + FASTLED_USING_NAMESPACE -static constexpr auto NUM_LEDS = 100; +constexpr auto WIFI_SSID = "McDonalds Free WiFi 2.4GHz"; +constexpr auto WIFI_PASSWD = "Passwort_123"; + +LedController ledController; + +constexpr auto pin = 0; +constexpr auto NUM_LEDS = 100; std::array leds; +ESP8266WebServer server(80); + +uint8_t gHue = 0; + +bool rotatePattern = true; + void addGlitter(fract8 chanceOfGlitter) { if(random8() < chanceOfGlitter) leds[random16(leds.size())] += CRGB::White; } -static uint8_t gHue = 0; - -static const std::array, 7> patterns { +const std::array, 7> patterns { []() { fill_rainbow(&leds[0], leds.size(), gHue, 7); @@ -100,9 +112,7 @@ static const std::array, 7> patterns { } }; -static auto iter = patterns.begin(); - -static bool rotatePattern = true; +auto iter = patterns.begin(); void nextPattern() { @@ -111,141 +121,121 @@ void nextPattern() iter = patterns.begin(); } -static esp_err_t index_handler(httpd_req_t *req) +void index_handler() { - - static const char *index1 = "" - "" - "" - "" - "

Total Entchen-Control 1.0

" - "

" - "Next pattern "; - - static const char *turnOn = "Enable pattern rotate "; - static const char *turnOff = "Disable pattern rotate"; - - static const char *index2 = "

" - "
" - "" - "" - "" - "
" - "" - ""; - - String str = index1; + String str = "" + "" + "" + "" + "

Total Entchen-Control 1.0

" + "

" + "Next pattern "; if (rotatePattern) - str += turnOff; + str += "Disable pattern rotate"; else - str += turnOn; - str += index2; + str += "Enable pattern rotate "; - return httpd_resp_send(req, str.c_str(), str.length()); + const auto index = std::distance(patterns.begin(), iter); + + str += "

" + "
" + "" + "