Wyświetlacze TFT LCD 2.2 i 2.4 cala ILI9341

Wyświetlacze TFT LCD 2.2 i 2.4 cala ILI9341

W tej części artykułu przedstawimy dwa kolorowe wyświetlacze typu TFT LCD o przekątnej 2.2 oraz 2.4 cala i rozdzielczości 240 x 320 pikseli. Obydwa wyświetlacze oparte są o sterownik ILI9341 który komunikuje się z mikrokontrolerem za pomocą interfejsu SPI. Wyświetlacz 2.4 cala posiada dodatkowo panel dotykowy. W tym celu do połączenia wykorzystamy Arduino UNO R3 ponieważ posiada sprzętową obsługę tego interfejsu. Wyświetlacz posiada również wbudowaną obsługę gniazda kart SD i może być wykorzystany z poziomu Arduino. Obydwa wyświetlacze dostępne są w naszym sklepie: KLIK

Obsługa wyświetlaczy z tej serii jest nieco bardziej skomplikowana niż tych z poprzedniej części, aczkolwiek nie nastręcza większych problemów. Największym problemem w tym przypadku jest większa ilość połączeń z uwagi na to że sterownik wyświetlacza pracuje z poziomami napięć logicznych rzędu 3,3 V. Poziom napięć logicznych Arduino to 5 V, dlatego na płytce stykowej zmontujemy prosty konwerter stanów logicznych oparty o dzielniki rezystorowe. Do tego celu będziemy potrzebować 4 sztuki rezystorów 1,8 kΩ oraz 4 sztuki rezystorów 3,3 kΩ. Dzięki dzielnikowi rezystorowemu obniżymy napięcie pinów wyjściowych arduino do akceptowalnego przez sterownik wyświetlacza poziomu 3,3 V.  Schemat połączeń przedstawiono poniżej:

Podłączenie wyświetlacza ze sterownikiem ILI9341

Podłączenie wyświetlacza ze sterownikiem ILI9341

 

Listwa goldpin w dolnej części płytki stykowej odpowiada złączu wyświetlacza. Ucinamy nóżki rezystorów tak, aby nie wystawały wysoko ponad płytkę. Rezystory podłączamy tak jak widać na powyższym obrazku. Najlepszym rozwiązaniem jest podłączenie linii zasilania płytki stykowej do zasilania arduino (+3,3 V oraz GND). Następnie, idąc od lewej strony:

  • pin MISO podpinamy bezpośrednio do pinu D12,
  • LED do zasilania +3,3 V,
  • SCK do wyjścia pierwszego dzielnika rezystorowego, a jego wejście do pinu D13,
  • MOSI do wyjścia drugiego dzielnika rezystorowego, a jego wejście do pinu D11,
  • DC/RS do wyjścia czwartego dzielnika rezystorowego, a jego wejście do pinu D9,
  • RESET podciągamy do napięcia zasilania +3,3 V,
  • CS do wyjścia trzeciego dzielnika rezystorowego, a jego wejście do pinu D10.
  • Na końcu, piny zasilania GND oraz VCC podłączamy do linii zasilającej którą wcześniej podłączyliśmy sobie do płytki stykowej.

Gdy jesteśmy pewni że połączenia są poprawne, czas przejść do oprogramowania wyświetlacza. Potrzebne nam będą biblioteki do obsługi sterownika. Pobieramy i instalujemy w środowisku Arduino IDE poniższe biblioteki:

Następnie uruchamiamy zmodyfikowany przez nas, przykładowy kod:

#define TFT_DC 9
#define TFT_CS 10

#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <SPI.h>

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

void setup(void)
{
  tft.begin();
  tft.fillScreen(ILI9341_YELLOW);
  tft.setCursor(55, 50);
  tft.setTextSize(2);
  tft.setTextColor(ILI9341_BLACK);
  tft.setTextWrap(true);
  tft.print("ZAPRASZAMY");
  tft.setCursor(100, 100);
  tft.setTextSize(2);
  tft.setTextColor(ILI9341_BLACK);
  tft.setTextWrap(true);
  tft.print("NA");
  tft.setCursor(45, 150);
  tft.setTextSize(3);
  tft.setTextColor(ILI9341_BLUE);
  tft.setTextWrap(true);
  tft.print("GO");
  tft.setCursor(80, 150);
  tft.setTextSize(3);
  tft.setTextColor(ILI9341_RED);
  tft.setTextWrap(true);
  tft.print("TRONIK");
  tft.setCursor(45, 250);
  tft.setTextSize(2);
  tft.setTextColor(ILI9341_BLACK);
  tft.setTextWrap(true);
  tft.print("GOTRONIK.COM");
}

void loop() {}

 

Warto zauważyć że w funkcji Adafruit_ILI9341 jako argumenty podajemy tylko numery pinów odpowiadające za Chip Select oraz Data Command. Z racji tego, że pracujemy z Arduino IDE, i używamy sprzętowego SPI, kod rozpoznaje jaką mamy wybraną płytkę (Uno R3) i na tej podstawie przypisuje resztę linii komunikacyjnych (MISO, MOSI, SCK).

Po poprawnej kompilacji oraz załadowaniu programu, naszym oczom powinien ukazać się poniższy widok:

Efekt końcowy

Efekt końcowy

Dla testów wyświetlacza można wgrać również któryś z przykładów, np graphictest.

 

Dodaj komentarz