added lighting settings to UI and prefs
This commit is contained in:
@@ -26,6 +26,10 @@ 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}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint8_t lightingHue = 0;
|
||||||
|
uint8_t lightingSaturation = 255;
|
||||||
|
uint8_t lightingBrightness = 255;
|
||||||
|
|
||||||
bool overrideActive[NUM_CHANNELS] = {false};
|
bool overrideActive[NUM_CHANNELS] = {false};
|
||||||
|
|
||||||
ConnectionState connectionState = STATE_DISCONNECTED;
|
ConnectionState connectionState = STATE_DISCONNECTED;
|
||||||
@@ -107,6 +111,14 @@ void coreInit() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lightingHue = prefs.getUChar("light_hue", 0);
|
||||||
|
lightingSaturation = prefs.getUChar("light_sat", 255);
|
||||||
|
lightingBrightness = prefs.getUChar("light_bright",255);
|
||||||
|
|
||||||
|
Serial.printf("Lighting loaded (0–255): H=%d S=%d B=%d\n",
|
||||||
|
lightingHue, lightingSaturation, lightingBrightness);
|
||||||
|
|
||||||
|
|
||||||
// Start UDP with runtime port
|
// Start UDP with runtime port
|
||||||
udp.begin(udpPort);
|
udp.begin(udpPort);
|
||||||
Serial.print("Listening on UDP port ");
|
Serial.print("Listening on UDP port ");
|
||||||
|
|||||||
@@ -23,6 +23,11 @@ extern float logicalPoints[5];
|
|||||||
extern float calibratedPoints[NUM_CHANNELS][5];
|
extern float calibratedPoints[NUM_CHANNELS][5];
|
||||||
extern bool overrideActive[NUM_CHANNELS];
|
extern bool overrideActive[NUM_CHANNELS];
|
||||||
|
|
||||||
|
// Lighting parameters (0–255 range for now)
|
||||||
|
extern uint8_t lightingHue; // 0–255
|
||||||
|
extern uint8_t lightingSaturation; // 0–255
|
||||||
|
extern uint8_t lightingBrightness; // 0–255
|
||||||
|
|
||||||
// State
|
// State
|
||||||
extern ConnectionState connectionState;
|
extern ConnectionState connectionState;
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,24 @@ void calOverrideSwitchCallback(Control *sender, int type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void lightingSaveCallback(Control *sender, int type) {
|
||||||
|
if (type != B_UP) return; // avoid double-trigger
|
||||||
|
|
||||||
|
prefs.putUChar("light_hue", lightingHue);
|
||||||
|
prefs.putUChar("light_sat", lightingSaturation);
|
||||||
|
prefs.putUChar("light_bright", lightingBrightness);
|
||||||
|
|
||||||
|
Serial.printf("Lighting saved (0–255): H=%d S=%d B=%d\n",
|
||||||
|
lightingHue, lightingSaturation, lightingBrightness);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int toSlider(uint8_t v) {
|
||||||
|
return (int)((v / 255.0f) * 100.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t fromSlider(int v) {
|
||||||
|
return (uint8_t)((v / 100.0f) * 255.0f);
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
// UI init
|
// UI init
|
||||||
@@ -213,13 +231,58 @@ void uiInit(uint16_t& tabSettings, uint16_t& tabLighting, uint16_t& tabCalibrati
|
|||||||
restartCallback
|
restartCallback
|
||||||
);
|
);
|
||||||
|
|
||||||
// Lighting tab placeholder
|
// -------------------------------
|
||||||
|
// Lighting Controls
|
||||||
|
// -------------------------------
|
||||||
|
|
||||||
|
// Hue slider (0–360)
|
||||||
ESPUI.addControl(
|
ESPUI.addControl(
|
||||||
ControlType::Label,
|
ControlType::Slider,
|
||||||
"Lighting Placeholder",
|
"Hue",
|
||||||
"Coming soon...",
|
String(toSlider(lightingHue)),
|
||||||
|
ControlColor::Sunflower,
|
||||||
|
tabLighting,
|
||||||
|
[](Control *sender, int type) {
|
||||||
|
int sliderVal = sender->value.toInt(); // 0–100
|
||||||
|
lightingHue = fromSlider(sliderVal); // convert to 0–255
|
||||||
|
Serial.printf("Lighting Hue changed (RAM only): %d\n", lightingHue);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Saturation slider (0–100)
|
||||||
|
ESPUI.addControl(
|
||||||
|
ControlType::Slider,
|
||||||
|
"Saturation",
|
||||||
|
String(toSlider(lightingSaturation)),
|
||||||
|
ControlColor::Carrot,
|
||||||
|
tabLighting,
|
||||||
|
[](Control *sender, int type) {
|
||||||
|
int sliderVal = sender->value.toInt(); // 0–100
|
||||||
|
lightingSaturation = fromSlider(sliderVal);
|
||||||
|
Serial.printf("Lighting Saturation updated (RAM only): %d\n", lightingSaturation);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Brightness slider (0–100)
|
||||||
|
ESPUI.addControl(
|
||||||
|
ControlType::Slider,
|
||||||
|
"Brightness",
|
||||||
|
String(toSlider(lightingBrightness)),
|
||||||
ControlColor::Emerald,
|
ControlColor::Emerald,
|
||||||
tabLighting
|
tabLighting,
|
||||||
|
[](Control *sender, int type) {
|
||||||
|
int sliderVal = sender->value.toInt(); // 0–100
|
||||||
|
lightingBrightness = fromSlider(sliderVal);
|
||||||
|
Serial.printf("Lighting Brightness updated (RAM only): %d\n", lightingBrightness);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
ESPUI.addControl(
|
||||||
|
ControlType::Button,
|
||||||
|
"Save Lighting Settings",
|
||||||
|
"Save",
|
||||||
|
ControlColor::Emerald,
|
||||||
|
tabLighting,
|
||||||
|
lightingSaveCallback
|
||||||
);
|
);
|
||||||
|
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user