esp32 compatibility

This commit is contained in:
2019-08-21 14:00:14 +02:00
parent a5b20bd475
commit 69aacdd903
6 changed files with 203 additions and 150 deletions

View File

@@ -1,4 +1,4 @@
; PlatformIO Project Configuration File ;PlatformIO Project Configuration File
; ;
; Build options: build flags, source filter ; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags ; Upload options: custom upload port, speed and extra flags
@@ -8,7 +8,13 @@
; Please visit documentation for the other options and examples ; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html ; https://docs.platformio.org/page/projectconf.html
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
[env:d1_mini] [env:d1_mini]
platform = espressif8266 platform = espressif8266
board = d1_mini board = d1_mini
framework = arduino framework = arduino

View File

@@ -5,75 +5,126 @@ else {
HOMEDIR += $$(HOME) HOMEDIR += $$(HOME)
} }
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include" INCLUDEPATH += "$${HOMEDIR}/projects/LedController/include"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include" INCLUDEPATH += "$${HOMEDIR}/projects/LedController/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/cores/esp8266" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/FS/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/variants/d1_mini" INCLUDEPATH += "$${HOMEDIR}/projects/LedController/lib/FastLED"
INCLUDEPATH += "$${HOMEDIR}/LedController/lib/FastLED" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPI" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Wire" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/xtensa-lx106-elf" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include-fixed" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip"
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include" 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}/.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/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/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/tool-unity" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/tool-unity"
INCLUDEPATH += "$${HOMEDIR}/LedController/include"
INCLUDEPATH += "$${HOMEDIR}/LedController/src"
DEFINES += "PLATFORMIO=30603" DEFINES += "PLATFORMIO=40000"
DEFINES += "ESP8266" DEFINES += "ARDUINO_ESP32_DEV"
DEFINES += "ARDUINO_ARCH_ESP8266" DEFINES += "ESP32"
DEFINES += "ARDUINO_ESP8266_WEMOS_D1MINI" DEFINES += "ESP_PLATFORM"
DEFINES += "F_CPU=80000000L" DEFINES += "F_CPU=240000000L"
DEFINES += "__ets__" DEFINES += "HAVE_CONFIG_H"
DEFINES += "ICACHE_FLASH" DEFINES += "MBEDTLS_CONFIG_FILE="mbedtls/esp_config.h""
DEFINES += "ARDUINO=10805" DEFINES += "ARDUINO=10805"
DEFINES += "ARDUINO_BOARD="PLATFORMIO_D1_MINI"" DEFINES += "ARDUINO_ARCH_ESP32"
DEFINES += "FLASHMODE_DIO" DEFINES += "ARDUINO_VARIANT="esp32""
DEFINES += "LWIP_OPEN_SRC" DEFINES += "ARDUINO_BOARD="Espressif ESP32 Dev Module""
DEFINES += "TCP_MSS=536"
DEFINES += "LWIP_FEATURES=1"
DEFINES += "LWIP_IPV6=0"
DEFINES += "VTABLES_IN_FLASH"
OTHER_FILES += platformio.ini OTHER_FILES += platformio.ini
HEADERS += src/pattern.h
HEADERS += src/ledsettings.h
HEADERS += src/ledcontroller.h
SOURCES += src/main.cpp
HEADERS += src/controlclient.h HEADERS += src/controlclient.h
HEADERS += src/pattern.h
HEADERS += src/ledcontroller.h
HEADERS += src/ledsettings.h
SOURCES += src/main.cpp
HEADERS += src/patterns/bpmpattern.h
HEADERS += src/patterns/confettipattern.h HEADERS += src/patterns/confettipattern.h
HEADERS += src/patterns/fire2012pattern.h HEADERS += src/patterns/fire2012pattern.h
HEADERS += src/patterns/sineleonpattern.h
HEADERS += src/patterns/rainbowpattern.h
HEADERS += src/patterns/jugglepattern.h HEADERS += src/patterns/jugglepattern.h
HEADERS += src/patterns/rainbowpattern.h
HEADERS += src/patterns/rainbowwithglitterpattern.h HEADERS += src/patterns/rainbowwithglitterpattern.h
HEADERS += src/patterns/bpmpattern.h HEADERS += src/patterns/sineleonpattern.h
HEADERS += src/patterns/plasmapattern.h HEADERS += src/patterns/plasmapattern.h

View File

@@ -61,7 +61,7 @@ class LedController
{ {
public: public:
LedController() : LedController() :
controller(FastLED.addLeds<WS2812, pin, BRG>(&leds[0], leds.size())), controller(FastLED.addLeds<WS2812, pin, RGB>(&leds[0], leds.size())),
m_rainbow(leds), m_rainbow(leds),
m_rainbowWithGlitter(leds), m_rainbowWithGlitter(leds),
m_confetti(leds), m_confetti(leds),

View File

@@ -10,5 +10,5 @@ FASTLED_USING_NAMESPACE
class Pattern; class Pattern;
constexpr auto pin = 0; constexpr auto pin = 0;
constexpr auto NUM_LEDS = 100; constexpr auto NUM_LEDS = 250;
using LedContainer = std::array<CRGB, NUM_LEDS>; using LedContainer = std::array<CRGB, NUM_LEDS>;

View File

@@ -3,18 +3,33 @@
#include <Arduino.h> #include <Arduino.h>
constexpr bool useRemoteServer = false;
#ifdef ESP32
#include <WiFi.h>
#include <WebServer.h>
#elif ESP8266
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
#include <ESP8266WebServer.h> #include <ESP8266WebServer.h>
#else
#error "unknown board"
#endif
#include "ledcontroller.h" #include "ledcontroller.h"
#include "controlclient.h" #include "controlclient.h"
constexpr auto WIFI_SSID = "McDonalds Free WiFi 2.4GHz"; constexpr auto WIFI_SSID = "Camp2019-things";
constexpr auto WIFI_PASSWD = "Passwort_123"; constexpr auto WIFI_PASSWD = "camp2019";
LedController ledController; LedController ledController;
#ifdef ESP32
WebServer server(80);
#elif ESP8266
ESP8266WebServer server(80); ESP8266WebServer server(80);
#else
#error "unknown board"
#endif
bool power = true; bool power = true;
bool rotatePattern = true; bool rotatePattern = true;
@@ -138,6 +153,7 @@ void setup()
); );
}); });
#if ESP8266
server.on("/update", HTTP_GET, []() { server.on("/update", HTTP_GET, []() {
server.sendHeader("Connection", "close"); server.sendHeader("Connection", "close");
server.send(200, "text/html", server.send(200, "text/html",
@@ -154,7 +170,6 @@ void setup()
}, []() { }, []() {
HTTPUpload& upload = server.upload(); HTTPUpload& upload = server.upload();
if (upload.status == UPLOAD_FILE_START) { if (upload.status == UPLOAD_FILE_START) {
Serial.setDebugOutput(true);
Serial.printf("Update: %s\n", upload.filename.c_str()); Serial.printf("Update: %s\n", upload.filename.c_str());
uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000;
@@ -171,11 +186,10 @@ void setup()
} else { } else {
Update.printError(Serial); Update.printError(Serial);
} }
Serial.setDebugOutput(false);
} }
yield(); yield();
}); });
#endif
server.on("/reboot", HTTP_GET, []() { server.on("/reboot", HTTP_GET, []() {
server.sendHeader("Connection", "close"); server.sendHeader("Connection", "close");
@@ -239,112 +253,103 @@ void setup()
server.on("/setPattern", HTTP_GET, []() server.on("/setPattern", HTTP_GET, []()
{ {
const String *val = nullptr;
for (int i = 0; i < server.args(); i++) for (int i = 0; i < server.args(); i++)
if (server.argName(i) == "val") if (server.argName(i) == "val")
val = &server.arg(i); {
const auto val = server.arg(i);
if (!val) const auto index = atoi(val.c_str());
{ if (index < 0 || index >= ledController.patterns.size())
server.send(400, "text/html", "val missing"); {
return; server.send(400, "text/html", "out of range");
} return;
}
const auto index = atoi(val->c_str()); ledController.iter = ledController.patterns.begin() + index;
if (index < 0 || index >= ledController.patterns.size())
{
server.send(400, "text/html", "out of range");
return;
}
ledController.iter = ledController.patterns.begin() + index; server.send(200, "text/html", "ok");
return;
}
server.send(400, "text/html", "val missing");
server.send(200, "text/html", "ok");
}); });
server.on("/setPower", HTTP_GET, []() server.on("/setPower", HTTP_GET, []()
{ {
const String *val = nullptr;
for (int i = 0; i < server.args(); i++) for (int i = 0; i < server.args(); i++)
if (server.argName(i) == "val") if (server.argName(i) == "val")
val = &server.arg(i); {
const auto val = server.arg(i);
if (!val) if (val != "true" && val != "false")
{ {
server.send(400, "text/html", "val missing"); server.send(400, "text/html", "invalid val");
return; return;
} }
if (*val != "true" && *val != "false") if (val == "true")
{ client.on();
server.send(400, "text/html", "invalid val"); else
return; client.off();
}
if (*val == "true") server.send(200, "text/html", "ok");
client.on();
else
client.off();
server.send(200, "text/html", "ok"); return;
}
server.send(400, "text/html", "val missing");
}); });
server.on("/setPatternRotate", HTTP_GET, []() server.on("/setPatternRotate", HTTP_GET, []()
{ {
const String *val = nullptr;
for (int i = 0; i < server.args(); i++) for (int i = 0; i < server.args(); i++)
if (server.argName(i) == "val") if (server.argName(i) == "val")
val = &server.arg(i); {
const auto val = server.arg(i);
if (!val) if (val != "true" && val != "false")
{ {
server.send(400, "text/html", "val missing"); server.send(400, "text/html", "invalid val");
return; return;
} }
if (*val != "true" && *val != "false") rotatePattern = val == "true";
{
server.send(400, "text/html", "invalid val");
return;
}
rotatePattern = *val == "true"; server.send(200, "text/html", "ok");
}
server.send(200, "text/html", "ok"); server.send(400, "text/html", "val missing");
}); });
server.on("/setBrightness", HTTP_GET, []() server.on("/setBrightness", HTTP_GET, []()
{ {
const String *val = nullptr;
for (int i = 0; i < server.args(); i++) for (int i = 0; i < server.args(); i++)
if (server.argName(i) == "val") if (server.argName(i) == "val")
val = &server.arg(i); {
const auto val = server.arg(i);
if (!val) const auto brightness = atoi(val.c_str());
{ if (brightness < 0 || brightness > 255)
server.send(400, "text/html", "val missing"); {
return; server.send(400, "text/html", "out of range");
} return;
}
const auto brightness = atoi(val->c_str()); FastLED.setBrightness(brightness);
if (brightness < 0 || brightness > 255)
{
server.send(400, "text/html", "out of range");
return;
}
FastLED.setBrightness(brightness); server.send(200, "text/html", "ok");
server.send(200, "text/html", "ok"); return;
}
server.send(400, "text/html", "val missing");
}); });
server.begin(); server.begin();
} }
void loop() void loop()
{ {
EVERY_N_MILLISECONDS(20) EVERY_N_MILLISECONDS(20)
@@ -364,7 +369,8 @@ void loop()
} }
} }
client.handleClient(); if (useRemoteServer)
client.handleClient();
server.handleClient(); server.handleClient();
} }

View File

@@ -9,20 +9,8 @@
FASTLED_USING_NAMESPACE FASTLED_USING_NAMESPACE
class PlasmaPattern : public Pattern { class PlasmaPattern : public Pattern
// Use qsuba for smooth pixel colouring and qsubd for non-smooth pixel colouring {
template<typename T1, typename T2>
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<typename T1, typename T2>
auto qsuba(T1 x, T2 b)
{
return (x > b) ? x - b : 0; // Analog Unsigned subtraction macro. if result <0, then => 0
}
public: public:
using Pattern::Pattern; using Pattern::Pattern;
@@ -39,7 +27,9 @@ public:
for (int k=0; k<leds.size(); k++) { // For each of the LED's in the strand, set a brightness based on a wave as follows: for (int k=0; k<leds.size(); k++) { // For each of the LED's in the strand, set a brightness based on a wave as follows:
int colorIndex = cubicwave8((k*23)+thisPhase)/2 + cos8((k*15)+thatPhase)/2; // Create a wave and add a phase change and add another wave with its own phase change.. Hey, you can even change the frequencies if you wish. int colorIndex = cubicwave8((k*23)+thisPhase)/2 + cos8((k*15)+thatPhase)/2; // Create a wave and add a phase change and add another wave with its own phase change.. Hey, you can even change the frequencies if you wish.
int thisBright = qsuba(colorIndex, beatsin8(7,0,96)); // qsub gives it a bit of 'black' dead space by setting sets a minimum value. If colorIndex < current value of beatsin8(), then bright = 0. Otherwise, bright = colorIndex.. const auto b = beatsin8(7,0,96);
int thisBright = // qsub gives it a bit of 'black' dead space by setting sets a minimum value. If colorIndex < current value of beatsin8(), then bright = 0. Otherwise, bright = colorIndex..
(colorIndex > b) ? colorIndex - b : 0;
leds[k] = ColorFromPalette(currentPalette, colorIndex, thisBright, currentBlending); // Let's now add the foreground colour. leds[k] = ColorFromPalette(currentPalette, colorIndex, thisBright, currentBlending); // Let's now add the foreground colour.
} }