Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Podłączanie wyświetlaczy TFT do Arduino - krok po kroku

ghost666 03 Lis 2019 13:22 2115 5
  • Podłączanie wyświetlaczy TFT do Arduino - krok po kroku
    Ekrany dotykowe TFT oferują możliwość stworzenia fenomenalnego interfejsu graficznego z niewielkimi mikrokontrolerami, takimi jak układy z rodzin AVR, PIC czy STM21. Wyświetlacze te oferują szeroką gamę kolorów, dobre parametry graficzne i wygodne mapowanie pikseli.

    W poniższym tutorialu opiszemy, jak do Arduino podłączyć shield z 2,4-calowym wyświetlaczem TFT LCD. Shield ten dedykowany jest do Arduino UNO, ale wykorzystany zostanie z wersją Mega z uwagi na większą ilość pamięci programu w niej zawartej.

    Na tego rodzaju kolorowym ekranie TFT prezentować można znaki tekstowe, przyciski, ale też całe obrazki (bitmapy). Przyjrzyjmy się krok po kroku, czego potrzebujemy, aby zintegrować taki ekran w naszym następnym projekcie.

    Krok 1: Wymagania sprzętowe i programowe

    Aby zestawić najprostszy system opisywany w tym artykule, potrzebujemy:

    * Arduino Mega
    * Wyświetlacz LCD TFT - 2,4", 2,8" lub 3,2" - w postaci shielda do Arduino.
    * Kabel USB

    Dodatkowo na komputerze musimy mieć zainstalowane:

    * Arduino IDE
    * Bibliotekę UTFT
    * Bibliotekę spfd5408

    Generalnie opisywany shield dedykowany jest do Arduino UNO, ale może być wykorzystany z płytką Mega. Chcemy tak zrobić z dwóch powodów - pierwszym jest większa pamięć programu układu ATMEGA, a drugim kwestia wykorzystania i ilości pinów GPIO w systemie - o ile Arduino Uno posiada odpowiednią liczbę wyjść, by działać z ekranem, to po jego podłączeniu pozostaje ich niewiele do wykorzystania na inne cele.

    By korzystać z systemu na płytce Arduino Mega musimy zmdyfikować bibliotekę UTFT obsługującą ekran:

    Podłączanie wyświetlaczy TFT do Arduino - krok po kroku


    Krok 2: Modyfikacje biblioteki UTFT

    Biblioteka jest kontynuacją bibliotek, takich jak ITDB02_Graph, ITDB02_Graph16 czy RGB_GLCD, jakie dostępne były dla Arduino i chipKita. Wraz z rosnącą liczbą wspieranych wyświetlaczy i kontrolerów ekranów nadszedł czas na stworzenie jednej uniwersalnej biblioteki. W ten sposób łatwiej jest utrzymywać kod programu.

    Arduino Mega ma 256 kb pamięci programu i 54 piny GPIO. Większość pinów można wykorzystać. Dostępne jest pięć spośród 16 pinów analogowych mikrokontrolera.

    Biblioteka wspiera wyświetlacze z interfejsem równoległym - 8- i 16-bitowym - oraz interfejsem szeregowym. Współpracuje z modułami Arduino, chipKit i niektórymi LaunchPadami od Texas Instruments.

    Z uwagi na rozmiar biblioteki odradza się jej stosowanie z układami takimi jak ATmega328 (Arduino UNO) czy ATmega32U4 (Arduino Leonardo), jako że mają one jedynie 32 kb pamięci Flash. Program będzie działać, ale pozostanie niewiele miejsca na naszą aplikację.

    By zmodyfikować bibliotekę, musimy:

    * Pobrać bibliotekę UTFT
    * Rozpakować paczkę z biblioteką
    * Wejść do folderu UTFT\hardware\avr w przypadku korzystania z Arduino lub innego, jeżeli chcemy ją modyfikować pod kątem wykorzystania dla innej platformy
    * Otworzyć HW_AVR_defines wykorzystując np. notatnik.
    * Odkomentować linię 7, aby umożliwić wykorzystanie modułu z Arduino Mega
    * Zapisać plik
    * Dodać bibliotekę w Arduino IDE

    Teraz gotowi jesteśmy na kolejne kroki, czyli inicjalizację i testowanie wyświetlania.

    Krok 3: Inicjalizacja wyświetlacza TFT

    Zmodyfikowaną bibliotekę dodajemy do Arduino IDE. Dzięki temu mamy dostęp do jej dokumentacji. Otwieramy bibliotekę i dokumentację do niej, gdzie znajdziemy trzy pliki:

    * UTFT:

    Ten plik wymienia wszystkie funkcje i komendy, jakie znajdują się w bibliotece

    * UTFT_Requirement

    Ten plik posiada informacje na temat modułu i jak np. podłączyć jego piny do Arduino.

    * UTFT_Supported_display_modules_&_controller

    Ten plik wymieni nazwy wszystkich modułów i shieldów, które wspierane są przez bibliotekę. Widzimy tutaj listę modułów i nazw, które wykorzystamy następnie do definicji naszego modułu w programie.

    Aby zdefiniować moduł w programie:

    1. Otwórz plik UTFT_Supported_display_modules_&_controller w bibliotece.
    2. Znajdź model swojego modułu (shielda), jaki masz podpięty do Arduino.
    3. Znając nazwę modułu możemy w programie skorzystać z funkcji:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    4. Otwórz plik UTFT_Requirement w bibliotece. Z dokumentu dowiedzieć możemy się, że potrzebne są nam piny A5, A4, A3 oraz A2.
    5. W programie wykorzystaj funkcję:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    lub

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I gotowe - teraz możemy korzystać z biblioteki ze zmianami w Arduino IDE z modułem Mega,

    Podłączanie wyświetlaczy TFT do Arduino - krok po kroku
    Krok 4: Hello World, czyli pierwszy program

    Podstawowy program do przetestowania funkcjonalności naszego wyświetlacza pozwoli nam zaprezentować na nim pojedynczy napis. Kod programu wygląda następująco:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Podłączanie wyświetlaczy TFT do Arduino - krok po kroku
    Krok 5: Wyświetlanie tekstu różnymi czcionkami z pomocą UTFT

    W bibliotekę UTFT wbudowano możliwość wyświetlania liter z pomocą kilku preprogramowanych czcionek. Poniższy przykład pokazuje, w jaki sposób można przełączać się pomiędzy nimi, a demonstracja pozwala nam zapoznać się z efektami.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Podłączanie wyświetlaczy TFT do Arduino - krok po kroku
    Krok 6: Wyświetlanie kształtów, linii i wzorów

    W bibliotekę UTFT wbudowane są funkcje do automatycznego rysowania podstawowych kształtów, linii itp. Zaprezentowany poniżej szkic Arduino demonstruje możliwości biblioteki:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Podłączanie wyświetlaczy TFT do Arduino - krok po kroku
    Krok 7: Wyświetlanie mapy bitowej

    Wykorzystując moduł Arduino, możliwe jest wyświetlanie obrazków - zapisanych jako mapy bitowe - na opisywanym ekranie TFT. Poniżej znajdziemy szkic Arduino, który pozwala na realizację takiej operacji.

    Kod: c
    Zaloguj się, aby zobaczyć kod




    W źródłowym artykule znajdziemy także informacje, w jaki sposób korzystając z powyższej biblioteki, możemy stworzyć przyciski do wykorzystania wraz z ekranem dotykowym w prezentowanym module.

    Źródło: https://www.instructables.com/id/Arduino-TFT-Interfacing/

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9461 postów o ocenie 7212, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • PCBway
  • #2
    tmf
    Moderator Mikrokontrolery Projektowanie
    ghost666 napisał:
    Ekrany dotykowe TFT oferują możliwość stworzenia fenomenalnego interfejsu graficznego z niewielkimi mikrokontrolerami, takimi jak układy z rodzin AVR, PIC czy STM21.

    IMHO załączony do artykułu filmik kompletnie temu przeczy. Tempo odświeżania jest tak niskie, że o ile teoretycznie jakieś GUI można na tym zrobić, to w praktyce nie nazwałbym je "fenomenalnym". Ktoś pewnie napisze - użyj ARM. I to może być dobra rada, tyle, że nawet na poczciwym AVR można zrobić interfejs o rząd wielkości szybszy. Jednak korzystanie z takich procków jak AVR z LCD QVGA wymaga jednak zdecydowanie lepszej optymalizacji kodu, w przeciwnym przypadku efekty są słabe - jak na filmiku. W praktyce trzeba przepisać kod obsługi interfejsu SPI lub interfejsu równoległego do LCD, napisać sensowne niskopoziomowe funkcje odpowiedzialne za rendering fontów, operacje bitblokowe itd.
  • PCBway
  • #3
    khoam
    Poziom 35  
    Nie wiem czemu, ale od razu mam skojarzenia z tym wątkiem :)
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=18003572#18003572

    Dodano po 4 [minuty]:

    ghost666 napisał:
    Pobrać bibliotekę UTFT

    Są naprawdę lepsze i nowsze biblioteki do Arduino np.:
    https://github.com/lexus2k/ssd1306 (nie tylko dla SSD1306)
  • #4
    szczepan999
    Poziom 11  
    Dobra, a są w sprzedaży jakieś duże (kilka cali minimum) wyświetlacze o niskich rozdzielczościach?
    Wtedy jednocześnie z rozsądną prędkością ogarnie to byle AVR i użytkownik nie musi celować w toto palcami przez mikroskop.
  • #5
    FastProject
    Poziom 28  
    szczepan999 napisał:
    Dobra, a są w sprzedaży jakieś duże (kilka cali minimum) wyświetlacze o niskich rozdzielczościach?
    Wtedy jednocześnie z rozsądną prędkością ogarnie to byle AVR i użytkownik nie musi celować w toto palcami przez mikroskop.


    A sprawdzałeś?

    Jest tego pełno w polskich sklepach. Jak chcesz gotowy moduł z sterownikami podświetlania, dotyku i gniazdami kart SD to poszukaj też na Aliexpress, są od około 2" do 7".
  • #6
    tmf
    Moderator Mikrokontrolery Projektowanie
    szczepan999 napisał:
    Dobra, a są w sprzedaży jakieś duże (kilka cali minimum) wyświetlacze o niskich rozdzielczościach?
    Wtedy jednocześnie z rozsądną prędkością ogarnie to byle AVR i użytkownik nie musi celować w toto palcami przez mikroskop.

    Rozdzielczość nie jest takim problemem. Można użyć np. kontrolera FT8xx i wtedy nawet '51 stworzy super-GUI, można uż\yć czegoś np. z RA8865 i też AVR sobie poradzi nawet z 800x600 całkiem sprawnie. Po prostu przerzucamy część/całość na kontroler LCD. Oczywiście ma też sens dopbierać narzędzia do zadań, czyli użyć mocniejszego MCU.