Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

ghost666 03 Nov 2019 13:22 4011 6
  • 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:

    Code: c
    Log in, to see the code


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

    Code: c
    Log in, to see the code


    lub

    Code: c
    Log in, to see the code


    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:

    Code: c
    Log in, to see the code


    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.

    Code: c
    Log in, to see the code


    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:

    Code: c
    Log in, to see the code


    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.

    Code: c
    Log in, to see the code




    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/

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    ghost666
    Translator, editor
    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 wrote 10409 posts with rating 8703, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • Computer ControlsComputer Controls
  • #2
    tmf
    Moderator of Microcontroller designs
    ghost666 wrote:
    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.
  • Computer ControlsComputer Controls
  • #3
    khoam
    Level 39  
    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 wrote:
    Pobrać bibliotekę UTFT

    Są naprawdę lepsze i nowsze biblioteki do Arduino np.:
    https://github.com/lexus2k/ssd1306 (nie tylko dla SSD1306)
  • #4
    szczepan999
    Level 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
    Level 28  
    szczepan999 wrote:
    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 of Microcontroller designs
    szczepan999 wrote:
    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.
  • #7
    AdiGital
    Level 10  
    Z moich doświadczeń biblioteka UTFT nie jest wystarczająco wydajna. Przerabiałem temat wielokrotnie. Polecam bibliotekę MCUFRIEND_KBV. Robiłem testy porównawcze na Teensy 3.6 i zdecydowanie lepiej wypada niż UTFT. Poza tym oferuje automatyczną detekcję użytego kontrolera TFT. Dość łatwo można dodawać obsługę własnego mikrokontrolera. Obecnie kończę UI na Teensy 3.2 pracującego na 8 bitowym TFT zawierającego elementy w formie JPG. Po ukończeniu oczywiście przedstawię. Poniżej film z testów:


    Link