Jeśli wdrożenie krzywych nieliniowych do ściemniania/pwm to ma być duży problem, to może zrobić to (choćby tymczasowo) w takiej formie, że ograniczamy liczbę poziomów dimmera, np do 8 czy 16, i przypisać im wartości pwm (poziom0, poziom1, ... poziom15) .
Czyli na "wejściu" ściemnianie zostaje jak teraz (przycisk ściemnia/rozjaśnia, aplikacja, chmura), w firmware/gui/ustawieniach następuje zmiana, chocby przez drabinkę "case"
Tak więc wartość zmiennej uint32_t brightnessAdj = brightness; brightnessAdj = map(brightnessAdj, 0, 1023, 0, 255);
w https://github.com/krycha88/GUI-Generic/blob/master/lib/SuplaDevice/src/supla/control/dimmer_leds.cpp nie byłoby przepisywane j.w. prosto z zakresem przeskalowanym przez map() , tylko prosta drabinka case ileś zakresów i konkretne brightnessAdj value. A od strony gui www - ustawianie tych kilku(nastu) wartości
Dla oświetlenia led - testowałem dla 2 różnych źródeł światła - moje poziomy zupełnie płynnie regulują się w 11 poziomach:
poziom0 =0% pwm (off)
poziom1 = 1%
poziom2 = 2%
poziom3 = 3%
poziom4 = 5%
poziom5 = 10%
poziom6 = 20%
poziom7 = 30%
poziom8 = 45%
poziom9 = 60%
poziom10 = 100%
pomiędzy 60% pwm a 100% prawie nie ma już przyrostu jasności. A między 1 a 3% jest znacząca różnica.
DODATKOWO - takie przypisanie konkretnych wartości pwm - umożliwia dwa dodatkowe możliwości:
możliwość ustawienia odwrotnego kierunku regulacji pwm (w niektórych zastosowaniach - się przyda).
jeśli taka drabinka byłaby osobna dla każdego kanału w RGB (W) - to zestaw procentowy R G i B dla danej jasności pozwoliłby ustawić taką samą barwę dla różnych jasności (bo jak wiadomo - ta się rozjeżdza wraz z ściemnianiem ledów RGB, bo każdy z kanałów ma inną charakterystykę)
(napisałem na supla-device, ale wklejam też tutaj) https://github.com/SUPLA/supla-device/issues/28#issuecomment-1371225414
Jeśli wdrożenie krzywych nieliniowych do ściemniania/pwm to ma być duży problem, to może zrobić to (choćby tymczasowo) w takiej formie, że ograniczamy liczbę poziomów dimmera, np do 8 czy 16, i przypisać im wartości pwm (poziom0, poziom1, ... poziom15) . Czyli na "wejściu" ściemnianie zostaje jak teraz (przycisk ściemnia/rozjaśnia, aplikacja, chmura), w firmware/gui/ustawieniach następuje zmiana, chocby przez drabinkę "case" Tak więc wartość zmiennej
uint32_t brightnessAdj = brightness; brightnessAdj = map(brightnessAdj, 0, 1023, 0, 255);
w https://github.com/krycha88/GUI-Generic/blob/master/lib/SuplaDevice/src/supla/control/dimmer_leds.cpp nie byłoby przepisywane j.w. prosto z zakresem przeskalowanym przez map() , tylko prosta drabinka case ileś zakresów i konkretne brightnessAdj value. A od strony gui www - ustawianie tych kilku(nastu) wartości Dla oświetlenia led - testowałem dla 2 różnych źródeł światła - moje poziomy zupełnie płynnie regulują się w 11 poziomach: poziom0 =0% pwm (off) poziom1 = 1% poziom2 = 2% poziom3 = 3% poziom4 = 5% poziom5 = 10% poziom6 = 20% poziom7 = 30% poziom8 = 45% poziom9 = 60% poziom10 = 100% pomiędzy 60% pwm a 100% prawie nie ma już przyrostu jasności. A między 1 a 3% jest znacząca różnica.DODATKOWO - takie przypisanie konkretnych wartości pwm - umożliwia dwa dodatkowe możliwości: