diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index 470d69d62..654c99a54 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -123,10 +123,10 @@ gId('abl').style.display = (en) ? 'inline':'none'; gId('psu2').style.display = (en) ? 'inline':'none'; if (!en) d.Sf.PPL.checked = false; - enPPL(); UI(); } - function enPPL() + // enable per port limiter and calculate current + function enPPL(sDI=0) { const abl = d.Sf.ABL.checked; const ppl = d.Sf.PPL.checked; @@ -139,9 +139,11 @@ d.Sf.querySelectorAll("#mLC input[name^=MA]").forEach((i,n)=>{ gId("PSU"+n).style.display = ppl ? "inline" : "none"; const t = parseInt(d.Sf["LT"+n].value); // LED type SELECT + const c = parseInt(d.Sf["LC"+n].value); //get LED count i.min = ppl && !(isVir(t) || isAna(t)) ? 250 : 0; - if (!abl) i.value = 0; + if (!abl || isVir(t) || isAna(t)) i.value = 0; else if (ppl) sumMA += parseInt(i.value,10); + else if (sDI) i.value = Math.round(parseInt(d.Sf.MA.value,10)*c/sDI); }); if (ppl) d.Sf.MA.value = sumMA; // populate UI ABL value if PPL used } @@ -201,10 +203,9 @@ function UI(change=false) { let isRGBW = false, gRGBW = false, memu = 0; - let sumMA = 0, busMA = 0; + let busMA = 0; let sLC = 0, sPC = 0, sDI = 0, maxLC = 0; const ablEN = d.Sf.ABL.checked; - const pplEN = d.Sf.PPL.checked; // enable/disable LED fields d.Sf.querySelectorAll("#mLC select[name^=LT]").forEach((s)=>{ @@ -253,9 +254,6 @@ gId("dig"+n+"l").style.display = (isD2P(t) || isPWM(t)) ? "inline":"none"; // bus clock speed / PWM speed (relative) (not On/Off) gId("rev"+n).innerHTML = isAna(t) ? "Inverted output":"Reversed (rotated 180°)"; // change reverse text for analog //gId("psd"+n).innerHTML = isAna(t) ? "Index:":"Start:"; // change analog start description - if (ablEN && pplEN && !(isVir(t) || isAna(t))) { - sumMA += parseInt(d.Sf["MA"+n].value); // summarize PPL ABL limit (fields) - } }); // display global white channel overrides gId("wc").style.display = (gRGBW) ? 'inline':'none'; @@ -279,7 +277,6 @@ if (s+c > sLC) sLC = s+c; //update total count if (c > maxLC) maxLC = c; //max per output if (!isVir(t)) sPC += c; //virtual out busses do not count towards physical LEDs - //if (!(isVir(t) || isPWM(t))) sDI += c; if (!(isVir(t) || isAna(t))) { sDI += c; // summarize digital LED count let maPL = parseInt(d.Sf["LA"+n].value); @@ -327,18 +324,9 @@ else LC.style.color = d.ro_gpio.some((e)=>e==parseInt(LC.value)) ? "orange" : "#fff"; } }); - // distribute ABL current if not using PPL, otherwise sumMA contains summarized ABL limit - d.Sf.querySelectorAll("#mLC input[name^=LC]").forEach((s,n)=>{ - let c = parseInt(s.value,10); //get LED count - let t = parseInt(d.Sf["LT"+n].value); //get LED type - if (!ablEN || isVir(t) || isAna(t)) { - // virtual and analog LEDs have no limiter - d.Sf["MA"+n].value = 0; - return; - } - if (!pplEN) d.Sf["MA"+n].value = Math.round(parseInt(d.Sf.MA.value,10)*c/sDI); - }); - if (pplEN) d.Sf.MA.value = sumMA; // update global ABL if using PPL + // distribute ABL current if not using PPL + enPPL(sDI); + // update total led count gId("lc").textContent = sLC; gId("pc").textContent = (sLC == sPC) ? "":"(" + sPC + " physical)"; @@ -461,7 +449,6 @@ mA/LED: Keep at <1A if poweing LEDs directly from the ESP 5V pin!
Analog (PWM) and virtual LEDs cannot use automatic brightness limiter.
Maximum PSU Current: mA
- Use per-output limiter:
+ Use per-output limiter: