Witam szanownych forumowiczów, mam taki drobny problem na który brakuje mi wyobraźni i może ktoś z Was otworzy mi oczy prostym rozwiązaniem

Co 1s dostaje wartości od 1 do 5, która informuje mnie o tym który przekaźnik należy włączyć, zależy mi na tym, żeby przekaźniki nie trzaskały jak wściekłe tylko miały powiedzmy aktualizację stanu co 20s ale tylko w dół, w górę muszą mieć jak najszybszą reakcję.
Wszystko gra dopóki zmiany wartości są stabilne i następują po sobie w jakimś ( dłuższym odstępie czasu ) jeżeli natomiast mam stan "niestabilny" czyli zmieniają się co sekundę wartości np. z 5 na 4 i znowu z 4 na 5 to przekaźniki szaleją.
Zrobiłem sobie taki o to kawałek kodu, który mniej więcej robi to o co mi chodzi, czyli opóźnia o xx sekund wysterowanie przekaźnika w dół i o xx sekund wysterowanie przekaźnika w górę (20s i 1s).
w
sectionNo dostaje wartość do sterowania, w
unitControl.activeSection poprzednią wartość
holdTimeUpDelay, holdTimeDnDelay opoźnienie wysterowania przekaźnika
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Może macie jakieś pomysły jak ograniczyć tak szybkie zmiany stanu przekaźników, zachowując jednocześnie szybki czas reakcji w przypadku otrzymania większej wartości?
Chris