Add PWM frequency selection in settings
This commit is contained in:
@@ -146,30 +146,30 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
||||
break; // no parameter
|
||||
}
|
||||
awmode = request->arg(aw).toInt();
|
||||
uint16_t freqHz = request->arg(sp).toInt();
|
||||
if (type > TYPE_ONOFF && type < 49) {
|
||||
switch (freqHz) {
|
||||
case 0 : freqHz = WLED_PWM_FREQ/3; break;
|
||||
case 1 : freqHz = WLED_PWM_FREQ/2; break;
|
||||
uint16_t freq = request->arg(sp).toInt();
|
||||
if (IS_PWM(type)) {
|
||||
switch (freq) {
|
||||
case 0 : freq = WLED_PWM_FREQ/3; break;
|
||||
case 1 : freq = WLED_PWM_FREQ/2; break;
|
||||
default:
|
||||
case 2 : freqHz = WLED_PWM_FREQ; break;
|
||||
case 3 : freqHz = WLED_PWM_FREQ*2; break;
|
||||
case 4 : freqHz = WLED_PWM_FREQ*3; break;
|
||||
case 2 : freq = WLED_PWM_FREQ; break;
|
||||
case 3 : freq = WLED_PWM_FREQ*4/3; break;
|
||||
case 4 : freq = WLED_PWM_FREQ*2; break;
|
||||
}
|
||||
} else if (type > 48 && type < 64) {
|
||||
switch (freqHz) {
|
||||
} else if (IS_DIGITAL(type) && IS_2PIN(type)) {
|
||||
switch (freq) {
|
||||
default:
|
||||
case 0 : freqHz = 1000; break;
|
||||
case 1 : freqHz = 2000; break;
|
||||
case 2 : freqHz = 5000; break;
|
||||
case 3 : freqHz = 10000; break;
|
||||
case 4 : freqHz = 20000; break;
|
||||
case 0 : freq = 1000; break;
|
||||
case 1 : freq = 2000; break;
|
||||
case 2 : freq = 5000; break;
|
||||
case 3 : freq = 10000; break;
|
||||
case 4 : freq = 20000; break;
|
||||
}
|
||||
} else {
|
||||
freqHz = 0;
|
||||
freq = 0;
|
||||
}
|
||||
channelSwap = Bus::hasWhite(type) ? request->arg(wo).toInt() : 0;
|
||||
if ((type > TYPE_TM1814 && type < TYPE_WS2801) || type >= TYPE_NET_DDP_RGB) { // analog and virtual
|
||||
if (type == TYPE_ONOFF || IS_PWM(type) || IS_VIRTUAL(type)) { // analog and virtual
|
||||
maPerLed = 0;
|
||||
maMax = 0;
|
||||
} else {
|
||||
@@ -180,7 +180,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
||||
// actual finalization is done in WLED::loop() (removing old busses and adding new)
|
||||
// this may happen even before this loop is finished so we do "doInitBusses" after the loop
|
||||
if (busConfigs[s] != nullptr) delete busConfigs[s];
|
||||
busConfigs[s] = new BusConfig(type, pins, start, length, colorOrder | (channelSwap<<4), request->hasArg(cv), skip, awmode, freqHz, useGlobalLedBuffer, maPerLed, maMax);
|
||||
busConfigs[s] = new BusConfig(type, pins, start, length, colorOrder | (channelSwap<<4), request->hasArg(cv), skip, awmode, freq, useGlobalLedBuffer, maPerLed, maMax);
|
||||
busesChanged = true;
|
||||
}
|
||||
//doInitBusses = busesChanged; // we will do that below to ensure all input data is processed
|
||||
|
||||
Reference in New Issue
Block a user