fastled breaks from frame 6 onwards

This commit is contained in:
Daan Meijer 2025-01-14 23:05:42 +01:00
parent b913fca342
commit 9f889cd1a9
4 changed files with 133 additions and 41 deletions

View File

@ -19,7 +19,7 @@ lib_deps =
bblanchon/ArduinoJson@^6.19.4
vshymanskyy/Preferences@^2.0.0
mbed-multitech/flash-fs
fastled/FastLED@^3.6.0
fastled/FastLED@^3.7.0
arkhipenko/TaskScheduler@^3.7.0
drk/PubSubClient@^2.8
khoih-prog/ESPAsync_WiFiManager@^1.15.1

View File

@ -5,7 +5,10 @@
#define _TASK_SLEEP_ON_IDLE_RUN // Enable 1 ms SLEEP_IDLE powerdowns between runs if no callback methods were invoked during the pass
#define _TASK_STATUS_REQUEST // Compile with support for StatusRequest functionality - triggering tasks on status change events in addition to time only
#include <TaskScheduler.h>
// #define ENABLE_MQTT
#define ENABLE_WIFI
// #include <TaskScheduler.h>
#include "MQTT.h"
#include "Wifi.h"
@ -32,7 +35,50 @@ CRGB colorTable[] = {
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow
CRGB::Yellow,
CRGB::Red,
CRGB::Blue,
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow,
CRGB::Red,
CRGB::Blue,
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow,
CRGB::Red,
CRGB::Blue,
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow,
CRGB::Red,
CRGB::Blue,
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow,
CRGB::Red,
CRGB::Blue,
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow,
CRGB::Red,
CRGB::Blue,
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow,
CRGB::Red,
CRGB::Blue,
CRGB::Green,
CRGB::Purple,
CRGB::Turquoise,
CRGB::Yellow,
};
uint8_t colorIndex = 0;
@ -45,14 +91,6 @@ void colors(){
jumpTo(colorTable[colorIndex]);
}
Scheduler runner;
Task taskBlink(1000, TASK_FOREVER, &blink);
Task taskColors(1000, TASK_FOREVER, &colors);
// Task taskFade(1, TASK_FOREVER, &fadeTask);
// Task taskFeedWatchdog(1000, TASK_FOREVER, &feedWatchdog);
void setup() {
@ -69,48 +107,58 @@ void setup() {
// runner.init();
Serial.println("Initialized scheduler");
runner.addTask(taskBlink);
runner.addTask(taskColors);
// runner.addTask(taskFade);
// runner.addTask(taskFeedWatchdog);
// taskBlink.enable();
taskColors.enable();
// taskFade.enable();
// taskFeedWatchdog.enable();
Serial.println("Scheduled tasks");
// PinFinder_setup();
#ifdef ENABLE_PINFINDER
PinFinder_setup();
#endif
Led_setup();
jumpTo(CRGB(0xFF00FF));
#ifdef ENABLE_WIFI
Wifi_setup();
#endif
jumpTo(CRGB(0x00FFFF));
jumpTo(CRGB(0x000000));
#ifdef ENABLE_MQTT
MQTT_setup();
// OTA_setup();
#endif
#ifdef ENABLE_OTA
OTA_setup();
#endif
jumpTo(CRGB(0x00FFFF));
ESP.wdtEnable(10000);
// ESP.wdtEnable(10000);
}
void loop() {
#ifdef ENABLE_MQTT
MQTT_loop();
// OTA_loop();
// PinFinder_loop();
#endif
#ifdef ENABLE_OTA
OTA_loop();
#endif
#ifdef ENABLE_PINFINDER
PinFinder_loop();
#endif
// runner.execute();
colors();
delay(100);
delay(2000);
// Led_loop();
return;
String command;

View File

@ -12,6 +12,11 @@ CRGB strip2[STRIP_LENGTH];
int fadeStart = 0;
#ifdef LED_NEOPIXEL_BUS
NeoPixelBus<NeoGrbFeature, NeoWs2812xMethod> strip(STRIP_LENGTH, PIN_STRIP1);
#endif
void fadeTo(const CRGB & dest){
Serial.println("fadeTask is not implemented");
@ -33,19 +38,44 @@ void fadeTo(const CRGB & dest){
}
void displayLed(){
#ifdef LED_FASTLED
for(uint8_t index = 0; index < STRIP_LENGTH; index++){
// Serial.printf("Led 1:%02d 0x%02x%02x%02x\n", index, strip1[index].r, strip1[index].g, strip1[index].b);
}
for(uint8_t index = 0; index < STRIP_LENGTH; index++){
// Serial.printf("Led 2:%02d 0x%02x%02x%02x\n", index, strip2[index].r, strip2[index].g, strip2[index].b);
}
auto before = micros64();
FastLED.show();
auto after = micros64();
Serial.printf("FastLED.show took %d micros\n", after - before);
#endif
#ifdef LED_NEOPIXEL_BUS
for(uint8_t index = 0; index < STRIP_LENGTH; index++){
RgbColor color;
color.R = strip1[index].r;
color.G = strip1[index].g;
color.B = strip1[index].b;
strip.SetPixelColor(index, color);
}
strip.Show();
#endif
}
void jumpTo(const CRGB & dest){
// auto before = micros64();
// FastLED.showColor(dest);
// auto after = micros64();
// Serial.printf("FastLED.showColor took %d micros\n", after - before);
// return;
for(uint8_t index = 0; index < STRIP_LENGTH; index++){
strip1[index] = dest;
strip2[index] = dest;
strip1[index] = CRGB(dest);
strip2[index] = CRGB(dest);
}
Serial.printf("Set color to 0x%02x%02x%02x\n", dest.r, dest.g, dest.b);
displayLed();
@ -79,17 +109,20 @@ void fadeTask(){
void Led_setup(){
// pinMode(PIN_STRIP1, OUTPUT);
// pinMode(PIN_STRIP2, OUTPUT);
pinMode(PIN_STRIP1, OUTPUT);
pinMode(PIN_STRIP2, OUTPUT);
// analogWriteRange(255);
// pinMode(PIN_BUILTIN_LED, OUTPUT);
// digitalWrite(PIN_BUILTIN_LED, HIGH);
FastLED.addLeds<WS2812B, PIN_STRIP1>(strip1, STRIP_LENGTH);
#ifdef LED_FASTLED
// FastLED.addLeds<WS2812B, PIN_STRIP1>(strip2, STRIP_LENGTH);
FastLED.addLeds<WS2812B, PIN_STRIP2>(strip2, STRIP_LENGTH);
#endif
#ifdef LED_NEOPIXEL_BUS
strip.Begin();
#endif
}
void Led_loop(){
@ -111,7 +144,7 @@ void Led_loop(){
strip2[14] = CRGB(85, 60, 180);
FastLED.show();
delay(500);
strip2[19] = CRGB(50, 255, 20);
strip2[15] = CRGB(50, 255, 20);
FastLED.show();
delay(500);
}

View File

@ -4,13 +4,24 @@
#include <cstdio>
#include <Arduino.h>
// #define LED_NEOPIXEL_BUS
#define LED_FASTLED
#ifdef LED_FASTLED
// #define FASTLED_ALL_PINS_HARDWARE_SPI
// #define FASTLED_ALLOW_INTERRUPTS 0
#define FASTLED_INTERRUPT_RETRY_COUNT 1
#endif
#include <FastLED.h>
#define PIN_BUILTIN_LED 2
#ifdef LED_NEOPIXEL_BUS
#include <NeoPixelBus.h>
#endif
#define PIN_STRIP1 0
#define PIN_STRIP2 2
#define PIN_STRIP1 4
#define PIN_STRIP2 5
#define STRIP_LENGTH 46