From 9e00177d766b67e88e31b436e55519e6c5c797c1 Mon Sep 17 00:00:00 2001 From: "thomas.stockklauser" Date: Fri, 22 Nov 2019 19:19:48 +0100 Subject: [PATCH 1/2] - Fix the Visual Studio Project Structure with the e131 lib change to async - Add 3 New Effects: Police, Police All, Multi Dynamic --- wled00/FX.cpp | 89 ++++++++++++++++++++++ wled00/FX.h | 21 +++-- wled00/__vm/.wled00.vsarduino.h | 2 +- wled00/__vm/Compile.vmps.xml | 6 +- wled00/__vm/Configuration.Release.vmps.xml | 6 +- wled00/wled00.vcxproj | 8 +- wled00/wled00.vcxproj.filters | 30 ++++---- 7 files changed, 130 insertions(+), 32 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 8e18bc5bd..c9bf76c5f 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2346,6 +2346,95 @@ uint16_t WS2812FX::mode_static_pattern() return FRAMETIME; } +//Police Lights Red and Blue +uint16_t WS2812FX::mode_police() +{ + + SEGENV.step += 1; + if (SEGENV.step >= SEGLEN) { + SEGENV.step = 0; + } + + uint16_t idexR = SEGENV.step; + uint16_t topindex = SEGLEN / 2; + uint16_t antipodal; + + antipodal = idexR + topindex; + + if (idexR >= topindex) { + antipodal = (idexR + topindex) % SEGLEN; + } + + uint16_t idexB = antipodal; + + + uint8_t thathue = (thishuepolice + 160) % 255; + + + for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { + if (i == idexR) { + CRGB newcolor = CHSV(thishuepolice, thissat, 255); + setPixelColor(idexR, newcolor.r, newcolor.g, newcolor.b, 0x00); + } + else if (i == idexB) { + CRGB newcolor = CHSV(thathue, thissat, 255); + setPixelColor(idexB, newcolor.r, newcolor.g, newcolor.b, 0x00); + } + else { + setPixelColor(i, 0, 0, 0, 0); + } + } + return SPEED_FORMULA_L; +} + +//American Police Light with all LEDīs Red and Blue +uint16_t WS2812FX::mode_policeall() +{ + + SEGENV.step += 1; + if (SEGENV.step >= SEGLEN) { + SEGENV.step = 0; + } + + uint16_t idexR = SEGENV.step; + uint16_t topindex = SEGLEN / 2; + uint16_t antipodal; + + antipodal = idexR + topindex; + + if (idexR >= topindex) { + antipodal = (idexR + topindex) % SEGLEN; + } + + uint16_t idexB = antipodal; + + + uint8_t thathue = (thishuepolice + 160) % 255; + + CRGB indexRCol = CHSV(thishuepolice, thissat, 255); + CRGB indexBCol = CHSV(thathue, thissat, 255); + + setPixelColor(idexR, indexRCol.r, indexRCol.g, indexRCol.b, 0x00); + setPixelColor(idexB, indexBCol.r, indexBCol.g, indexBCol.b, 0x00); + + + return SPEED_FORMULA_L; + +} + +/* + * Lights every LED in a random color. Changes all LED at the same time + * to new random colors. + */ +uint16_t WS2812FX::mode_multi_dynamic() +{ + for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) { + setPixelColor(i, color_wheel(random8(SEGMENT.intensity))); + } + return (SEGMENT.speed); +} + + //Speed slider sets number of "lights", intensity sets LEDs per light /*uint16_t WS2812FX::mode_static_pattern2() diff --git a/wled00/FX.h b/wled00/FX.h index edb2d0956..673a24b6f 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 84 +#define MODE_COUNT 87 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -171,7 +171,9 @@ #define FX_MODE_TWINKLECAT 81 #define FX_MODE_HALLOWEEN_EYES 82 #define FX_MODE_STATIC_PATTERN 83 - +#define FX_MODE_POLICE 84 +#define FX_MODE_POLICE_ALL 85 +#define FX_MODE_MULTI_DYNAMIC 86 class WS2812FX { typedef uint16_t (WS2812FX::*mode_ptr)(void); @@ -310,7 +312,9 @@ class WS2812FX { _mode[FX_MODE_TWINKLECAT] = &WS2812FX::mode_twinklecat; _mode[FX_MODE_HALLOWEEN_EYES] = &WS2812FX::mode_halloween_eyes; _mode[FX_MODE_STATIC_PATTERN] = &WS2812FX::mode_static_pattern; - + _mode[FX_MODE_POLICE] = &WS2812FX::mode_police; + _mode[FX_MODE_POLICE_ALL] = &WS2812FX::mode_policeall; + _mode[FX_MODE_MULTI_DYNAMIC] = &WS2812FX::mode_multi_dynamic; _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -487,7 +491,10 @@ class WS2812FX { mode_twinklefox(void), mode_twinklecat(void), mode_halloween_eyes(void), - mode_static_pattern(void); + mode_static_pattern(void), + mode_police(void), + mode_policeall(void), + mode_multi_dynamic(void); private: NeoPixelWrapper *bus; @@ -520,6 +527,10 @@ class WS2812FX { mode_ptr _mode[MODE_COUNT]; // SRAM footprint: 4 bytes per element + /*Define Variables for the Police Effects*/ + int thissat = 255; //-FX LOOPS DELAY VAR + uint8_t thishuepolice = 0; + // mode helper functions uint16_t blink(uint32_t, uint32_t, bool strobe, bool), @@ -558,7 +569,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Out Out","Out In","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","BPM","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Police","Police All","Multi Dynamic" ])====="; diff --git a/wled00/__vm/.wled00.vsarduino.h b/wled00/__vm/.wled00.vsarduino.h index b9404fd23..722f8378f 100644 --- a/wled00/__vm/.wled00.vsarduino.h +++ b/wled00/__vm/.wled00.vsarduino.h @@ -18,7 +18,7 @@ #define ESP_PLATFORM #define HAVE_CONFIG_H #define F_CPU 240000000L -#define ARDUINO 10807 +#define ARDUINO 10809 #define ARDUINO_ESP32_DEV #define ARDUINO_ARCH_ESP32 #define ESP32 diff --git a/wled00/__vm/Compile.vmps.xml b/wled00/__vm/Compile.vmps.xml index 5140fc1b0..a7819d208 100644 --- a/wled00/__vm/Compile.vmps.xml +++ b/wled00/__vm/Compile.vmps.xml @@ -1,8 +1,8 @@ - - + + - + diff --git a/wled00/__vm/Configuration.Release.vmps.xml b/wled00/__vm/Configuration.Release.vmps.xml index 744603a0e..bcbca636a 100644 --- a/wled00/__vm/Configuration.Release.vmps.xml +++ b/wled00/__vm/Configuration.Release.vmps.xml @@ -1,8 +1,8 @@ - - + + - + diff --git a/wled00/wled00.vcxproj b/wled00/wled00.vcxproj index 4afd55b7e..b9842e0a4 100644 --- a/wled00/wled00.vcxproj +++ b/wled00/wled00.vcxproj @@ -73,7 +73,7 @@ true true true - $(ProjectDir)..\wled00;C:\Users\brent\Documents\Arduino\libraries\ESPAsyncTCP\src;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WiFi\src;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\ESPmDNS\src;C:\Users\brent\Documents\Arduino\libraries\AsyncTCP\src;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\SPIFFS\src;C:\Users\brent\Documents\Arduino\libraries\ESPAsyncWebServer\src;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\EEPROM\src;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\DNSServer\src;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\ArduinoOTA\src;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\FS\src;C:\Program Files (x86)\Arduino\libraries;C:\Users\brent\Documents\Arduino\libraries;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32\apps;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32\libb64;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\variants\esp32;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\config;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\app_trace;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\app_update;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\asio;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\bootloader_support;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\bt;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\coap;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\console;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\driver;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp-tls;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp32;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_adc_cal;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_event;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_http_client;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_http_server;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_https_ota;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_ringbuf;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\ethernet;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\expat;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\fatfs;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\freemodbus;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\freertos;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\heap;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\idf_test;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\jsmn;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\json;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\libsodium;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\log;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\lwip;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\mbedtls;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\mdns;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\micro-ecc;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\mqtt;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\newlib;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\nghttp;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\nvs_flash;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\openssl;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\protobuf-c;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\protocomm;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\pthread;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\sdmmc;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\smartconfig_ack;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\soc;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\spi_flash;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\spiffs;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\tcp_transport;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\tcpip_adapter;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\ulp;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\vfs;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\wear_levelling;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\wifi_provisioning;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\wpa_supplicant;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\xtensa-debug-module;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp32-camera;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp-face;C:\Users\brent\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\fb_gfx;C:\Users\brent\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\lib\gcc\xtensa-esp32-elf\5.2.0\include;C:\Users\brent\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\xtensa-esp32-elf;C:\Users\brent\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include;C:\Users\brent\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0;C:\Users\brent\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include\c++\5.2.0;C:\Users\brent\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include;C:\Users\brent\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include\include;%(AdditionalIncludeDirectories) + $(ProjectDir)..\wled00;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WiFi\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\ESPmDNS\src;C:\Program Files (x86)\Arduino\libraries\AsyncTCP;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\SPIFFS\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\FS\src;C:\Program Files (x86)\Arduino\libraries\ESPAsyncWebServer\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\EEPROM\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\DNSServer\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\ArduinoOTA\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\Update\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\AsyncUDP\src;$(ProjectDir)..\..\..\User\Thomas\Documents\Arduino\libraries\NeoPixelBus_by_Makuna\src;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\SPI\src;$(ProjectDir)..\..\..\User\Thomas\Documents\Arduino\libraries\FastLED;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\User\Thomas\Documents\Arduino\libraries;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\libraries;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32\apps;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\cores\esp32\libb64;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\variants\esp32;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\config;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\app_trace;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\app_update;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\asio;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\bootloader_support;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\bt;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\coap;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\console;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\driver;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp-tls;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp32;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_adc_cal;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_event;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_http_client;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_http_server;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_https_ota;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp_ringbuf;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\ethernet;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\expat;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\fatfs;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\freemodbus;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\freertos;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\heap;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\idf_test;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\jsmn;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\json;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\libsodium;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\log;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\lwip;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\mbedtls;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\mdns;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\micro-ecc;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\mqtt;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\newlib;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\nghttp;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\nvs_flash;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\openssl;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\protobuf-c;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\protocomm;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\pthread;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\sdmmc;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\smartconfig_ack;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\soc;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\spi_flash;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\spiffs;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\tcp_transport;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\tcpip_adapter;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\ulp;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\vfs;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\wear_levelling;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\wifi_provisioning;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\wpa_supplicant;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\xtensa-debug-module;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp32-camera;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\esp-face;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\hardware\esp32\1.0.2\tools\sdk\include\fb_gfx;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\lib\gcc\xtensa-esp32-elf\5.2.0\include;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\xtensa-esp32-elf;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\xtensa-esp32-elf\include\c++\5.2.0;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include\c++\5.2.0;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include;C:\Users\thoma\AppData\Local\arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0\include\include;%(AdditionalIncludeDirectories) $(ProjectDir)__vm\.wled00.vsarduino.h;%(ForcedIncludeFiles) __ESP32_esp32__;__ESP32_ESP32__;ESP_PLATFORM;HAVE_CONFIG_H;F_CPU=240000000L;ARDUINO=10809;ARDUINO_ESP32_DEV;ARDUINO_ARCH_ESP32;ESP32;CORE_DEBUG_LEVEL=0;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions) @@ -301,9 +301,7 @@ CppCode - - CppCode - + CppCode @@ -345,7 +343,7 @@ - + diff --git a/wled00/wled00.vcxproj.filters b/wled00/wled00.vcxproj.filters index 252c269af..e2c2b219c 100644 --- a/wled00/wled00.vcxproj.filters +++ b/wled00/wled00.vcxproj.filters @@ -62,9 +62,6 @@ Header Files - - Header Files - Header Files @@ -179,9 +176,6 @@ Header Files - - Header Files - Header Files @@ -203,14 +197,14 @@ Header Files + + Header Files + + + Header Files + - - Source Files - - - Source Files - Source Files @@ -253,9 +247,6 @@ Source Files - - Source Files - Source Files @@ -268,5 +259,14 @@ Source Files + + Source Files + + + Source Files + + + Source Files + \ No newline at end of file From 1d9d1f6bbdb3fe4070154dfeb00b938b429a50bb Mon Sep 17 00:00:00 2001 From: cschwinne Date: Mon, 25 Nov 2019 01:20:03 +0100 Subject: [PATCH 2/2] Simplified police code --- wled00/FX.cpp | 107 +++++++++++--------------------------------------- wled00/FX.h | 26 +++++------- 2 files changed, 34 insertions(+), 99 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c9bf76c5f..e4ee0aabf 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2346,95 +2346,36 @@ uint16_t WS2812FX::mode_static_pattern() return FRAMETIME; } + +//American Police Light with all LEDs Red and Blue +uint16_t WS2812FX::mode_policeall() +{ + SEGENV.step++; + if (SEGENV.step >= SEGLEN) { + SEGENV.step = 0; + } + + uint16_t idexR = SEGENV.step; + uint16_t topindex = SEGLEN >> 1; + uint16_t idexB = idexR + topindex; + + if (idexR >= topindex) idexB -= SEGLEN; + + setPixelColor(idexR, RED); + setPixelColor(idexB, BLUE); + + return SPEED_FORMULA_L; +} + + //Police Lights Red and Blue uint16_t WS2812FX::mode_police() { + fill(SEGCOLOR(1)); - SEGENV.step += 1; - if (SEGENV.step >= SEGLEN) { - SEGENV.step = 0; - } - - uint16_t idexR = SEGENV.step; - uint16_t topindex = SEGLEN / 2; - uint16_t antipodal; - - antipodal = idexR + topindex; - - if (idexR >= topindex) { - antipodal = (idexR + topindex) % SEGLEN; - } - - uint16_t idexB = antipodal; - - - uint8_t thathue = (thishuepolice + 160) % 255; - - - for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { - if (i == idexR) { - CRGB newcolor = CHSV(thishuepolice, thissat, 255); - setPixelColor(idexR, newcolor.r, newcolor.g, newcolor.b, 0x00); - } - else if (i == idexB) { - CRGB newcolor = CHSV(thathue, thissat, 255); - setPixelColor(idexB, newcolor.r, newcolor.g, newcolor.b, 0x00); - } - else { - setPixelColor(i, 0, 0, 0, 0); - } - } - return SPEED_FORMULA_L; + return mode_policeall(); } -//American Police Light with all LEDīs Red and Blue -uint16_t WS2812FX::mode_policeall() -{ - - SEGENV.step += 1; - if (SEGENV.step >= SEGLEN) { - SEGENV.step = 0; - } - - uint16_t idexR = SEGENV.step; - uint16_t topindex = SEGLEN / 2; - uint16_t antipodal; - - antipodal = idexR + topindex; - - if (idexR >= topindex) { - antipodal = (idexR + topindex) % SEGLEN; - } - - uint16_t idexB = antipodal; - - - uint8_t thathue = (thishuepolice + 160) % 255; - - CRGB indexRCol = CHSV(thishuepolice, thissat, 255); - CRGB indexBCol = CHSV(thathue, thissat, 255); - - setPixelColor(idexR, indexRCol.r, indexRCol.g, indexRCol.b, 0x00); - setPixelColor(idexB, indexBCol.r, indexBCol.g, indexBCol.b, 0x00); - - - return SPEED_FORMULA_L; - -} - -/* - * Lights every LED in a random color. Changes all LED at the same time - * to new random colors. - */ -uint16_t WS2812FX::mode_multi_dynamic() -{ - for (uint16_t i = SEGMENT.start; i <= SEGMENT.stop; i++) { - setPixelColor(i, color_wheel(random8(SEGMENT.intensity))); - } - return (SEGMENT.speed); -} - - //Speed slider sets number of "lights", intensity sets LEDs per light /*uint16_t WS2812FX::mode_static_pattern2() diff --git a/wled00/FX.h b/wled00/FX.h index 673a24b6f..076bc0b9b 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 87 +#define MODE_COUNT 86 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -171,9 +171,9 @@ #define FX_MODE_TWINKLECAT 81 #define FX_MODE_HALLOWEEN_EYES 82 #define FX_MODE_STATIC_PATTERN 83 -#define FX_MODE_POLICE 84 -#define FX_MODE_POLICE_ALL 85 -#define FX_MODE_MULTI_DYNAMIC 86 +#define FX_MODE_POLICE 84 +#define FX_MODE_POLICE_ALL 85 + class WS2812FX { typedef uint16_t (WS2812FX::*mode_ptr)(void); @@ -312,9 +312,8 @@ class WS2812FX { _mode[FX_MODE_TWINKLECAT] = &WS2812FX::mode_twinklecat; _mode[FX_MODE_HALLOWEEN_EYES] = &WS2812FX::mode_halloween_eyes; _mode[FX_MODE_STATIC_PATTERN] = &WS2812FX::mode_static_pattern; - _mode[FX_MODE_POLICE] = &WS2812FX::mode_police; - _mode[FX_MODE_POLICE_ALL] = &WS2812FX::mode_policeall; - _mode[FX_MODE_MULTI_DYNAMIC] = &WS2812FX::mode_multi_dynamic; + _mode[FX_MODE_POLICE] = &WS2812FX::mode_police; + _mode[FX_MODE_POLICE_ALL] = &WS2812FX::mode_policeall; _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -492,9 +491,8 @@ class WS2812FX { mode_twinklecat(void), mode_halloween_eyes(void), mode_static_pattern(void), - mode_police(void), - mode_policeall(void), - mode_multi_dynamic(void); + mode_police(void), + mode_policeall(void); private: NeoPixelWrapper *bus; @@ -527,10 +525,6 @@ class WS2812FX { mode_ptr _mode[MODE_COUNT]; // SRAM footprint: 4 bytes per element - /*Define Variables for the Police Effects*/ - int thissat = 255; //-FX LOOPS DELAY VAR - uint8_t thishuepolice = 0; - // mode helper functions uint16_t blink(uint32_t, uint32_t, bool strobe, bool), @@ -567,9 +561,9 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Chase Rainbow","Chase Flash","Chase Flash Rnd","Rainbow Runner","Colorful","Traffic Light","Sweep Random","Running 2","Red & Blue","Stream", "Scanner","Lighthouse","Fireworks","Rain","Merry Christmas","Fire Flicker","Gradient","Loading","In Out","In In", "Out Out","Out In","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", -"Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","BPM","Fill Noise", +"Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Police","Police All","Multi Dynamic" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Police","Police All" ])=====";