added fastLED and LED output, doesn't compile yet, compiled binary is to big

This commit is contained in:
2026-01-20 11:48:01 +01:00
parent 9312ceb22b
commit d3586e697b
3 changed files with 29 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
#include <Arduino.h> #include <Arduino.h>
#include "Core.h" #include "Core.h"
#include <FastLED.h>
WiFiUDP udp; WiFiUDP udp;
Preferences prefs; Preferences prefs;
@@ -26,6 +27,13 @@ float calibratedPoints[NUM_CHANNELS][5] = {
{0.0f, 26.0f, 50.0f, 76.0f, 99.0f} {0.0f, 26.0f, 50.0f, 76.0f, 99.0f}
}; };
// -------------------------------
// Lighting (FastLED)
// -------------------------------
#define LED_PIN 23
#define NUM_LEDS 20 // or more if you expand later
CRGB leds[NUM_LEDS];
uint8_t lightingHue = 0; uint8_t lightingHue = 0;
uint8_t lightingSaturation = 255; uint8_t lightingSaturation = 255;
uint8_t lightingBrightness = 255; uint8_t lightingBrightness = 255;
@@ -63,6 +71,17 @@ float applyCalibration(uint8_t ch, float logicalDuty) {
return calibratedPoints[ch][4]; return calibratedPoints[ch][4];
} }
void applyLighting() {
// Convert HSV (0255 each) to RGB
CHSV hsv(lightingHue, lightingSaturation, lightingBrightness);
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = hsv;
}
FastLED.show();
}
void updateConnectionStatusUI(ConnectionState state) { void updateConnectionStatusUI(ConnectionState state) {
const char* text = "Unknown"; const char* text = "Unknown";
@@ -118,6 +137,12 @@ void coreInit() {
Serial.printf("Lighting loaded (0255): H=%d S=%d B=%d\n", Serial.printf("Lighting loaded (0255): H=%d S=%d B=%d\n",
lightingHue, lightingSaturation, lightingBrightness); lightingHue, lightingSaturation, lightingBrightness);
// FastLED init
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(255); // full brightness; HSV V controls actual output
// Apply lighting immediately at boot
applyLighting();
// Start UDP with runtime port // Start UDP with runtime port
udp.begin(udpPort); udp.begin(udpPort);

View File

@@ -48,3 +48,4 @@ void coreUpdateState(); // called from loop()
// Helpers used by UI // Helpers used by UI
float applyCalibration(uint8_t ch, float logicalDuty); float applyCalibration(uint8_t ch, float logicalDuty);
void updateConnectionStatusUI(ConnectionState state); void updateConnectionStatusUI(ConnectionState state);
void applyLighting();

View File

@@ -246,6 +246,7 @@ void uiInit(uint16_t& tabSettings, uint16_t& tabLighting, uint16_t& tabCalibrati
int sliderVal = sender->value.toInt(); // 0100 int sliderVal = sender->value.toInt(); // 0100
lightingHue = fromSlider(sliderVal); // convert to 0255 lightingHue = fromSlider(sliderVal); // convert to 0255
Serial.printf("Lighting Hue changed (RAM only): %d\n", lightingHue); Serial.printf("Lighting Hue changed (RAM only): %d\n", lightingHue);
applyLighting();
} }
); );
@@ -260,6 +261,7 @@ void uiInit(uint16_t& tabSettings, uint16_t& tabLighting, uint16_t& tabCalibrati
int sliderVal = sender->value.toInt(); // 0100 int sliderVal = sender->value.toInt(); // 0100
lightingSaturation = fromSlider(sliderVal); lightingSaturation = fromSlider(sliderVal);
Serial.printf("Lighting Saturation updated (RAM only): %d\n", lightingSaturation); Serial.printf("Lighting Saturation updated (RAM only): %d\n", lightingSaturation);
applyLighting();
} }
); );
@@ -274,6 +276,7 @@ void uiInit(uint16_t& tabSettings, uint16_t& tabLighting, uint16_t& tabCalibrati
int sliderVal = sender->value.toInt(); // 0100 int sliderVal = sender->value.toInt(); // 0100
lightingBrightness = fromSlider(sliderVal); lightingBrightness = fromSlider(sliderVal);
Serial.printf("Lighting Brightness updated (RAM only): %d\n", lightingBrightness); Serial.printf("Lighting Brightness updated (RAM only): %d\n", lightingBrightness);
applyLighting();
} }
); );
ESPUI.addControl( ESPUI.addControl(