krycha88 / GUI-Generic

MIT License
17 stars 15 forks source link

Nieliniowe PWM - pwm ustawiane z tabelki a nie płynnie! #103

Open Hrumque opened 1 year ago

Hrumque commented 1 year ago

(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: