Powrót

Mikroprocesorowa ośla łączka, część 16

Niektóre urządzenia mające przyciski klawiszowe potrafią odróżnić „zwykłe” naciśnięcie przycisku od naciśnięcia „przedłużonego”. Daje do niejako podwojenie liczby funkcji przy użyciu tej samej klawiatury. Innym przydatnym wariantem jest klawiatura wyposażona w funkcję autorepetycji.

Wariant obsługi klawiatury opisany w poprzedniej części zostanie rozbudowany o nowe funkcjonalności. W swoim domu mam kilka urządzeń z „automatyki domowej”, w których rozróżniane jest standardowe naciśnięcie przycisku oraz naciśnięcie i przytrzymacie go przez znacząco dłuższy czas. W ten sposób można, bazując na jednym przycisku, uzyskać dwie funkcje. Kuchenny wentylator po każdym naciśnięciu zwiększa ciąg, inny przycisk zmniejsza i aby wyłączyć wentylator należy ileś razy zmniejszyć ciąg, by dojść do zera lub wykorzystać możliwość podwojenia funkcji: przytrzymanie pierwszego włącza maksymalny ciąg wentylatora, natomiast przytrzymanie drugiego wyłącza wentylator. Inną przydatną funkcją, która przykładowo jest typową w klawiaturach komputerowych jest autorepetycja. W samochodzie do ustawiania zegarka jest zastosowany jeden przycisk. Każdorazowe jego naciśnięcie przestawia zegarek o jedną minutę do przodu. Przy zmianie czasu, gdzie trzeba zegar cofnąć o jedną godzinę, takie klikanie to wręcz koszmar (przejść o 23 godziny do przodu). Na szczęście konstruktorzy dodali funkcję autorepetycji. Po pierwszym naciśnięciu (i przytrzymaniu) przycisku, po pewnym czasie zaczyna się on powielać w szybkim tempie. Takie funkcje są przydatne w konstruowanych urządzeniach.

Rozbudowa automatu sterującego

Wszystkie własności tego typu wymagają rozbudowy automatu sterującego o jeden stan, który właściwie wystąpi jedynie w wariancie klawiatury z autorepetycją (krótkie i długie naciśnięcie przycisku można rozwiązać, bazując na tych samych stanach automatu, który był opisany w poprzedniej części). Rozpatrując pierwszy przypadek (krótkiego i długiego naciśnięcia przycisku) zmianie ulega funkcja logiki, determinująca przejścia między wybranymi stanami automatu oraz znaczenie odpowiednich interwałów czasu. Pierwszym elementem jaki można dostrzec w nowej wersji modułu obsługi klawiatury jest odmienny sposób pomiaru czasu. Dotychczas była zmienna z nadaną wcześniej wartością, która następnie była dekrementowana o jeden. W sytuacji gdy w stałych odcinkach czasu (przykładowo w obsłudze przerwań od zegara/licznika) ciągle odejmując jeden, stan zmiennej osiągnął zero, oznacza to, że upłynął ściśle określony interwał czasu. Jest to najprostsza i bardzo efektywna metoda odliczania (czegokolwiek), wymaga jedynie jednej zmiennej, będącej licznikiem. Inną możliwością jest wyzerowanie licznika w odpowiednim momencie i inkrementowanie go w stałych odcinkach czasu. Po każdej operacji dodania jedynki do zmiennej pełniącej funkcję licznika, wystarczy sprawdzić, czy osiągnęła ona zakładaną wartość (do przechowywania której wymagana jest dodatkowa zmienna). Takie rozwiązanie pozwala na odmierzanie kilku interwałów jednocześnie w prosty sposób. Ideę pokazuje rysunek 1. Oczywiście odmierzanie kilku interwałów w połączeniu z operacją dekrementacji również jest możliwe, ale w pewnych miejscach niesie większe komplikacje (nowy algorytm jest bardziej intuicyjny).

Rysunek 1

Oprócz tej zmiany zachodzi kilka modyfikacji w operacjach określania czasów trwania odpowiednich czynności oraz zmiany w stanie osiągnięcia stabilnego naciśnięcia przycisku. Dotychczas, po wstępnym wykryciu naciśnięcia przycisku do pokonania zjawiska dzwonienia styków był specyfikowany odpowiedni czas. W nowym rozwiązaniu następuje zmiana „sensu” wykonywanych operacji: odmierzany jest czas, po upływie którego oprogramowanie uznaje, że nastąpiło długie naciśnięcie przycisku zamiast „przetrwania” dzwonienia styków – rysunek 2 .

Rysunek 2

Jednak to zjawisko również musi zostać uwzględnione w programie i obecnie znajduje się w obrębie zainteresowania następnego stanu (rysunek 3 ), w którym (KeybActive), z założenia mierzony jest czas, po upływie którego program uznaje, że przycisk został naciśnięty „długo”.

Rysunek 3

(…)

——– ciach! ——–

To jest tylko fragment artykułu, którego pełna wersja ukazała się we wrześniowym numerze czasopisma Zrozumieć Elektronikę (ZE 9/2025). Pełną wersję czasopisma znajdziesz pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 9/2025 znajduje się tutaj.

Andrzej Pawluczuk
apawluczuk@vp.pl

Uwaga! Wskazówki, jak nabyć pełne wersje dowolnych numerów ZE znajdują się na stronie:
https://piotr-gorecki.pl/n11.