Projekt zrealizowany przez użytkownika @mati_atv

Opis projektu
Prezentowany projekt pokazuje, jak w prosty sposób wykorzystać kolorowy, dotykowy wyświetlacz TFT do stworzenia interaktywnego interfejsu na platformie zgodnej z Arduino UNO. Dzięki bibliotece MCUFRIEND_kbv umożliwiającej obsługę grafiki oraz TouchScreen i Adafruit_GFX_Button zarządzającym ekranem dotykowym i przyciskami, sekcja sprzętowa i programowa łączy się w spójny system. W pierwszej części projektu omawiamy sposób podłączenia modułu LCD do Arduino, precyzując funkcje linii danych, sygnałów sterujących i zasilania.
Następnie prezentujemy kod źródłowy, w którym definiujemy piny dotykowe, inicjalizujemy ekran i przyciski graficzne („TAK”, „NIE” oraz „Mati_ATV”), a także implementujemy funkcje rysowania tekstu wyśrodkowanego – w jednej lub dwóch liniach. Główna pętla programu na bieżąco odczytuje dotyk, aktualizuje stan przycisków i reaguje na interakcje użytkownika, automatycznie przywracając ekran podstawowy po 5 sekundach bez aktywności.




Podłączenie LCD do Arduino UNO
| Pin | Opis |
|---|---|
| LCD_RST | Sygnał resetu magistrali LCD, poziom niski – reset |
| LCD_CS | Sygnał wyboru układu LCD, poziom niski – aktywacja |
| LCD_RS | Sygnał wyboru polecenia/danych (niski: polecenie, wysoki: dane) |
| LCD_WR | Sygnał zapisu magistrali LCD |
| LCD_RD | Sygnał odczytu magistrali LCD |
| GND | Masa zasilania |
| 5V | Wejście zasilania 5 V |
| 3V3 | Wejście zasilania 3,3 V |
| LCD_D0 – LCD_D7 | Linie danych 8-bitowe LCD (bit 0 … bit 7) |
| LCD_D2 | Linia danych LCD, bit 2 |
| SD_SS | Sygnał wyboru układu SPI karty SD, poziom niski – aktywacja |
| SD_DI | Sygnał MOSI magistrali SPI karty SD |
| SD_DO | Sygnał MISO magistrali SPI karty SD |
| SD_SCK | Sygnał zegara magistrali SPI karty SD |
Kod programu:
Wytłumaczenie kodu programu:
Inkluzje bibliotek
W tej sekcji znajdują się importy niezbędnych bibliotek do obsługi wyświetlacza TFT, grafiki i ekranu dotykowego.
Definicje i zmienne globalne
Definiujemy progi nacisku oraz piny podłączone do ekranu dotykowego, a także tworzymy obiekty i zmienne potrzebne w programie.
Funkcja pobierająca współrzędne dotyku
Odczytujemy surowe wartości z ekranu, sprawdzamy nacisk, a następnie mapujemy je na współrzędne pikselowe.
Funkcja do rysowania wyśrodkowanego tekstu (jedna linia)
Czyści górny pasek, ustawia czcionkę i wyśrodkowuje podany tekst.
Funkcja do rysowania wyśrodkowanego tekstu (dwie linie)
Podobnie jak wyżej, ale dzieli obszar paska na dwie części i wyświetla dwie linie tekstu.
Funkcja setup()
Inicjalizuje port szeregowy, wyświetlacz, przyciski oraz wyświetla ekran powitalny.
Główna pętla loop()
Odczytuje dotyk, aktualizuje stan przycisków, reaguje na naciśnięcia i automatycznie resetuje ekran po 5 sekundach bez aktywności.
Co można dodać do projektu z ekranem dotykowym TFT?
Projekt z kolorowym ekranem dotykowym oparty na bibliotece MCUFRIEND_kbv oraz przyciskach graficznych (Adafruit_GFX_Button) stanowi solidną bazę do dalszej rozbudowy. Poniżej przedstawiono propozycje technicznych usprawnień i dodatkowych funkcji, które mogą poszerzyć możliwości projektu.
Propozycje usprawnień technicznych
- Kalibracja ekranu dotykowego
Można zastosować funkcję kalibracji, która pozwoli użytkownikowi dopasować wartości p.x i p.y do rzeczywistych wymiarów ekranu. Wartości te można następnie zapisać do pamięci EEPROM. - Zastąpienie delay() obsługą opartą o millis()
Zamiast wprowadzać opóźnienia za pomocą funkcji delay(), można kontrolować czas działania programu na podstawie funkcji millis(). Umożliwia to wykonywanie wielu operacji równolegle bez zatrzymywania pętli loop(). - Obsługa stanu aplikacji
Zamiast odliczać czas do automatycznego powrotu do ekranu głównego, można zastosować obsługę stanów. Każda akcja (np. wybranie opcji TAK) może prowadzić do innego widoku, a powrót do ekranu głównego może być realizowany za pomocą dodatkowego przycisku. - Dodanie sygnału dźwiękowego
Do projektu można dodać buzzer. Krótkie impulsy dźwiękowe mogą pełnić funkcję potwierdzenia interakcji z interfejsem dotykowym.
Propozycje rozbudowy funkcjonalnej
- Menu wielostronicowe
Można dodać obsługę wielu ekranów, np. z dodatkowymi opcjami, ustawieniami lub funkcjami edukacyjnymi. Przełączanie ekranów może odbywać się za pomocą przycisków lub gestów. - Obsługa dłuższego naciśnięcia (long press)
Można rozróżniać krótkie i długie przytrzymanie przycisku, przypisując im różne funkcje. Przykładowo, krótkie naciśnięcie może wywoływać jedną akcję, a dłuższe – drugą, bardziej zaawansowaną. - Tryb oszczędzania energii
W przypadku braku aktywności przez określony czas można wyświetlić komunikat „Dotknij, aby wznowić” lub wygasić ekran. Funkcja ta pozwala na oszczędzanie energii, zwłaszcza w projektach zasilanych bateryjnie.