Converted to ESP8266
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
; 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]
|
[env:esp01]
|
||||||
platform = espressif32
|
platform = espressif8266
|
||||||
board = esp32dev
|
board = esp01
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
164
platformio.pro
164
platformio.pro
@@ -5,114 +5,72 @@ else {
|
|||||||
HOMEDIR += $$(HOME)
|
HOMEDIR += $$(HOME)
|
||||||
}
|
}
|
||||||
|
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/cores/esp8266"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/variants/generic"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt"
|
INCLUDEPATH += "$${HOMEDIR}/LedController/lib/FastLED"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPI"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mbedtls"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/Wire"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mdns"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/micro-ecc"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mqtt"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/newlib"
|
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/nghttp"
|
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/nvs_flash"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-xtensa/lib/gcc/xtensa-lx106-elf/4.8.2/include"
|
||||||
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/tool-unity"
|
INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/tool-unity"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/test/include"
|
INCLUDEPATH += "$${HOMEDIR}/LedController/include"
|
||||||
INCLUDEPATH += "$${HOMEDIR}/test/src"
|
INCLUDEPATH += "$${HOMEDIR}/LedController/src"
|
||||||
|
|
||||||
DEFINES += "PLATFORMIO=30603"
|
DEFINES += "PLATFORMIO=30603"
|
||||||
DEFINES += "ARDUINO_ESP32_DEV"
|
DEFINES += "ESP8266"
|
||||||
DEFINES += "ESP32"
|
DEFINES += "ARDUINO_ARCH_ESP8266"
|
||||||
DEFINES += "ESP_PLATFORM"
|
DEFINES += "ARDUINO_ESP8266_ESP01"
|
||||||
DEFINES += "F_CPU=240000000L"
|
DEFINES += "F_CPU=80000000L"
|
||||||
DEFINES += "HAVE_CONFIG_H"
|
DEFINES += "__ets__"
|
||||||
DEFINES += "MBEDTLS_CONFIG_FILE="mbedtls/esp_config.h""
|
DEFINES += "ICACHE_FLASH"
|
||||||
DEFINES += "ARDUINO=10805"
|
DEFINES += "ARDUINO=10805"
|
||||||
DEFINES += "ARDUINO_ARCH_ESP32"
|
DEFINES += "ARDUINO_BOARD="PLATFORMIO_ESP01""
|
||||||
DEFINES += "ARDUINO_VARIANT="esp32""
|
DEFINES += "FLASHMODE_QIO"
|
||||||
DEFINES += "ARDUINO_BOARD="Espressif ESP32 Dev Module""
|
DEFINES += "LWIP_OPEN_SRC"
|
||||||
|
DEFINES += "TCP_MSS=536"
|
||||||
|
DEFINES += "LWIP_FEATURES=1"
|
||||||
|
DEFINES += "LWIP_IPV6=0"
|
||||||
|
DEFINES += "VTABLES_IN_FLASH"
|
||||||
|
|
||||||
OTHER_FILES += platformio.ini
|
OTHER_FILES += platformio.ini
|
||||||
|
|
||||||
SOURCES += src/main.cpp
|
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
|
||||||
|
33
src/ledcontroller.h
Normal file
33
src/ledcontroller.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
#include <FastLED.h>
|
||||||
|
|
||||||
|
#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<CRGB, NUM_LEDS> 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<Pattern*, 7>;
|
||||||
|
};
|
226
src/main.cpp
226
src/main.cpp
@@ -3,26 +3,38 @@
|
|||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
#include <WiFi.h>
|
#include <ESP8266WiFi.h>
|
||||||
#include <esp_http_server.h>
|
#include <ESP8266WebServer.h>
|
||||||
|
|
||||||
#include <FastLED.h>
|
#include <FastLED.h>
|
||||||
|
|
||||||
|
#include "ledcontroller.h"
|
||||||
|
|
||||||
FASTLED_USING_NAMESPACE
|
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<CRGB, NUM_LEDS> leds;
|
std::array<CRGB, NUM_LEDS> leds;
|
||||||
|
|
||||||
|
ESP8266WebServer server(80);
|
||||||
|
|
||||||
|
uint8_t gHue = 0;
|
||||||
|
|
||||||
|
bool rotatePattern = true;
|
||||||
|
|
||||||
void addGlitter(fract8 chanceOfGlitter)
|
void addGlitter(fract8 chanceOfGlitter)
|
||||||
{
|
{
|
||||||
if(random8() < chanceOfGlitter)
|
if(random8() < chanceOfGlitter)
|
||||||
leds[random16(leds.size())] += CRGB::White;
|
leds[random16(leds.size())] += CRGB::White;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t gHue = 0;
|
const std::array<std::function<void()>, 7> patterns {
|
||||||
|
|
||||||
static const std::array<std::function<void()>, 7> patterns {
|
|
||||||
[]()
|
[]()
|
||||||
{
|
{
|
||||||
fill_rainbow(&leds[0], leds.size(), gHue, 7);
|
fill_rainbow(&leds[0], leds.size(), gHue, 7);
|
||||||
@@ -100,9 +112,7 @@ static const std::array<std::function<void()>, 7> patterns {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static auto iter = patterns.begin();
|
auto iter = patterns.begin();
|
||||||
|
|
||||||
static bool rotatePattern = true;
|
|
||||||
|
|
||||||
void nextPattern()
|
void nextPattern()
|
||||||
{
|
{
|
||||||
@@ -111,141 +121,121 @@ void nextPattern()
|
|||||||
iter = patterns.begin();
|
iter = patterns.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t index_handler(httpd_req_t *req)
|
void index_handler()
|
||||||
{
|
{
|
||||||
|
String str = "<html>"
|
||||||
static const char *index1 = "<html>"
|
"<head>"
|
||||||
"<head>"
|
"</head>"
|
||||||
"</head>"
|
"<body>"
|
||||||
"<body>"
|
"<h1>Total Entchen-Control 1.0</h1>"
|
||||||
"<h1>Total Entchen-Control 1.0</h1>"
|
"<p>"
|
||||||
"<p>"
|
"<a href=\"cmd?var=nextPattern&val=\">Next pattern</a> ";
|
||||||
"<a href=\"cmd?var=nextPattern&val=\">Next pattern</a> ";
|
|
||||||
|
|
||||||
static const char *turnOn = "<a href=\"cmd?var=rotatePattern&val=true\">Enable pattern rotate</a> ";
|
|
||||||
static const char *turnOff = "<a href=\"cmd?var=rotatePattern&val=false\">Disable pattern rotate</a>";
|
|
||||||
|
|
||||||
static const char *index2 = "</p>"
|
|
||||||
"<form action=\"cmd\" method=\"GET\">"
|
|
||||||
"<input type=\"hidden\" name=\"var\" value=\"setPattern\" />"
|
|
||||||
"<select name=\"val\" size=\"7\">"
|
|
||||||
"<option value=\"0\">rainbow</option>"
|
|
||||||
"<option value=\"1\">rainbowWithGlitter</option>"
|
|
||||||
"<option value=\"2\">confetti</option>"
|
|
||||||
"<option value=\"3\">sinelon</option>"
|
|
||||||
"<option value=\"4\">juggle</option>"
|
|
||||||
"<option value=\"5\">bpm</option>"
|
|
||||||
"<option value=\"6\">Fire2012</option>"
|
|
||||||
"</select>"
|
|
||||||
"<button type=\"submit\">submit</button>"
|
|
||||||
"</form>"
|
|
||||||
"</body>"
|
|
||||||
"</html>";
|
|
||||||
|
|
||||||
String str = index1;
|
|
||||||
if (rotatePattern)
|
if (rotatePattern)
|
||||||
str += turnOff;
|
str += "<a href=\"cmd?var=rotatePattern&val=false\">Disable pattern rotate</a>";
|
||||||
else
|
else
|
||||||
str += turnOn;
|
str += "<a href=\"cmd?var=rotatePattern&val=true\">Enable pattern rotate</a> ";
|
||||||
str += index2;
|
|
||||||
|
|
||||||
return httpd_resp_send(req, str.c_str(), str.length());
|
const auto index = std::distance(patterns.begin(), iter);
|
||||||
|
|
||||||
|
str += "</p>"
|
||||||
|
"<form action=\"cmd\" method=\"GET\">"
|
||||||
|
"<input type=\"hidden\" name=\"var\" value=\"setPattern\" />"
|
||||||
|
"<select name=\"val\" size=\"7\">"
|
||||||
|
"<option value=\"0\"";
|
||||||
|
if (index == 0)
|
||||||
|
str += " selected";
|
||||||
|
str += ">rainbow</option>"
|
||||||
|
"<option value=\"1\"";
|
||||||
|
if (index == 1)
|
||||||
|
str += " selected";
|
||||||
|
str += ">rainbowWithGlitter</option>"
|
||||||
|
"<option value=\"2\"";
|
||||||
|
if (index == 2)
|
||||||
|
str += " selected";
|
||||||
|
str += ">confetti</option>"
|
||||||
|
"<option value=\"3\"";
|
||||||
|
if (index == 3)
|
||||||
|
str += " selected";
|
||||||
|
str += ">sinelon</option>"
|
||||||
|
"<option value=\"4\"";
|
||||||
|
if (index == 4)
|
||||||
|
str += " selected";
|
||||||
|
str += ">juggle</option>"
|
||||||
|
"<option value=\"5\"";
|
||||||
|
if (index == 5)
|
||||||
|
str += " selected";
|
||||||
|
str += ">bpm</option>"
|
||||||
|
"<option value=\"6\"";
|
||||||
|
if (index == 6)
|
||||||
|
str += " selected";
|
||||||
|
str += ">Fire2012</option>"
|
||||||
|
"</select>"
|
||||||
|
"<button type=\"submit\">submit</button>"
|
||||||
|
"</form>"
|
||||||
|
"</body>"
|
||||||
|
"</html>";
|
||||||
|
|
||||||
|
server.sendHeader("Connection", "close");
|
||||||
|
server.send(200, "text/html", str.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t status_handler(httpd_req_t *req)
|
void cmd_handler()
|
||||||
{
|
{
|
||||||
return httpd_resp_send(req, "statu2", 6);
|
server.sendHeader("Connection", "close");
|
||||||
}
|
|
||||||
|
|
||||||
static esp_err_t cmd_handler(httpd_req_t *req)
|
const String *var = nullptr;
|
||||||
{
|
const String *val = nullptr;
|
||||||
char* buf;
|
|
||||||
size_t buf_len;
|
|
||||||
char variable[32] = {0,};
|
|
||||||
char value[32] = {0,};
|
|
||||||
|
|
||||||
buf_len = httpd_req_get_url_query_len(req) + 1;
|
for (int i = 0; i < server.args(); i++)
|
||||||
if (buf_len > 1) {
|
{
|
||||||
buf = (char*)malloc(buf_len);
|
if (server.argName(i) == "var")
|
||||||
if(!buf){
|
var = &server.arg(i);
|
||||||
httpd_resp_send_500(req);
|
else if (server.argName(i) == "val")
|
||||||
return ESP_FAIL;
|
val = &server.arg(i);
|
||||||
}
|
|
||||||
if (httpd_req_get_url_query_str(req, buf, buf_len) == ESP_OK) {
|
|
||||||
if (httpd_query_key_value(buf, "var", variable, sizeof(variable)) == ESP_OK &&
|
|
||||||
httpd_query_key_value(buf, "val", value, sizeof(value)) == ESP_OK) {
|
|
||||||
} else {
|
|
||||||
free(buf);
|
|
||||||
httpd_resp_send_404(req);
|
|
||||||
return ESP_FAIL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
free(buf);
|
|
||||||
httpd_resp_send_404(req);
|
|
||||||
return ESP_FAIL;
|
|
||||||
}
|
|
||||||
free(buf);
|
|
||||||
} else {
|
|
||||||
httpd_resp_send_404(req);
|
|
||||||
return ESP_FAIL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(variable, "nextPattern"))
|
if (var == nullptr || val == nullptr)
|
||||||
|
server.send(400, "text/html", "var or val missing");
|
||||||
|
|
||||||
|
if (*var == "nextPattern")
|
||||||
{
|
{
|
||||||
nextPattern();
|
nextPattern();
|
||||||
return httpd_resp_send(req, "ok1", 3);
|
server.send(200, "text/html", "ok");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else if (!strcmp(variable, "setPattern"))
|
else if (*var == "setPattern")
|
||||||
{
|
{
|
||||||
const auto val = atoi(value);
|
const auto index = atoi(val->c_str());
|
||||||
if (val >= patterns.size())
|
if (index < 0 || index >= patterns.size())
|
||||||
return httpd_resp_send_500(req);
|
{
|
||||||
|
server.send(500, "text/html", "out of range");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
iter = patterns.begin() + val;
|
iter = patterns.begin() + index;
|
||||||
|
|
||||||
return httpd_resp_send(req, "ok2", 3);
|
server.send(200, "text/html", "ok");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else if (!strcmp(variable, "rotatePattern"))
|
else if (*var == "rotatePattern")
|
||||||
{
|
{
|
||||||
rotatePattern = !strcmp(value, "true");
|
rotatePattern = *val == "true";
|
||||||
return httpd_resp_send(req, "ok3", 3);
|
server.send(200, "text/html", "ok");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return httpd_resp_send_500(req);
|
server.send(500, "text/html", "unknown var");
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
WiFi.begin("realraum", "r3alraum");
|
WiFi.begin(WIFI_SSID, WIFI_PASSWD);
|
||||||
|
|
||||||
FastLED.addLeds<WS2811, 16, RGB>(&leds[0], leds.size()).setCorrection(TypicalLEDStrip);
|
FastLED.addLeds<WS2812, pin, RGB>(&leds[0], leds.size()).setCorrection(TypicalLEDStrip);
|
||||||
|
|
||||||
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
|
server.on("/", HTTP_GET, index_handler);
|
||||||
httpd_handle_t webserver;
|
server.on("/cmd", HTTP_GET, cmd_handler);
|
||||||
|
server.begin();
|
||||||
{
|
|
||||||
const esp_err_t error = httpd_start(&webserver, &config);
|
|
||||||
if (error != ESP_OK)
|
|
||||||
{
|
|
||||||
Serial.println("could not start webserver");
|
|
||||||
Serial.println(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const httpd_uri_t &uri : {
|
|
||||||
httpd_uri_t { "/", HTTP_GET, index_handler, NULL },
|
|
||||||
httpd_uri_t { "/status", HTTP_GET, status_handler, NULL },
|
|
||||||
httpd_uri_t { "/cmd", HTTP_GET, cmd_handler, NULL }
|
|
||||||
})
|
|
||||||
{
|
|
||||||
const esp_err_t error = httpd_register_uri_handler(webserver, &uri);
|
|
||||||
if (error != ESP_OK)
|
|
||||||
{
|
|
||||||
Serial.print("error registering uri ");
|
|
||||||
Serial.println(uri.uri);
|
|
||||||
Serial.println(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
@@ -263,5 +253,7 @@ void loop()
|
|||||||
nextPattern();
|
nextPattern();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server.handleClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
src/pattern.h
Normal file
5
src/pattern.h
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
class Pattern {
|
||||||
|
|
||||||
|
};
|
7
src/patterns/bpmpattern.h
Normal file
7
src/patterns/bpmpattern.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "pattern.h"
|
||||||
|
|
||||||
|
class BpmPattern : public Pattern {
|
||||||
|
|
||||||
|
};
|
7
src/patterns/confettipattern.h
Normal file
7
src/patterns/confettipattern.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "pattern.h"
|
||||||
|
|
||||||
|
class ConfettiPattern : public Pattern {
|
||||||
|
|
||||||
|
};
|
7
src/patterns/fire2012pattern.h
Normal file
7
src/patterns/fire2012pattern.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "pattern.h"
|
||||||
|
|
||||||
|
class Fire2012Pattern : public Pattern {
|
||||||
|
|
||||||
|
};
|
7
src/patterns/jugglepattern.h
Normal file
7
src/patterns/jugglepattern.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "pattern.h"
|
||||||
|
|
||||||
|
class JugglePattern : public Pattern {
|
||||||
|
|
||||||
|
};
|
7
src/patterns/rainbowpattern.h
Normal file
7
src/patterns/rainbowpattern.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "pattern.h"
|
||||||
|
|
||||||
|
class RainbowPattern : public Pattern {
|
||||||
|
|
||||||
|
};
|
7
src/patterns/rainbowwithglitterpattern.h
Normal file
7
src/patterns/rainbowwithglitterpattern.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "rainbowpattern.h"
|
||||||
|
|
||||||
|
class RainbowWithGlitterPattern : public RainbowPattern {
|
||||||
|
|
||||||
|
};
|
7
src/patterns/sineleonpattern.h
Normal file
7
src/patterns/sineleonpattern.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "pattern.h"
|
||||||
|
|
||||||
|
class SineleonPattern : public Pattern {
|
||||||
|
|
||||||
|
};
|
Reference in New Issue
Block a user