Zaloguje się
or
Tel +48 698 615 740

Podłączenie i zaprogramowanie wyświetlacza LCD TFT – 1.8′ – SPI – 128x160px dla Arduino

11 stycznia, 2022

W artykule zostanie omówione podłączenie wyświetlacza do Arduino, wykorzystanie przykładu z biblioteki, aby sprawdzić czy nasz wyświetlacz działa prawidłowo, a na końcu wyświetlimy na nim własną grafikę.

Spis treści

  • Krótki opis
  • Specyfikacja
  • Podłączenie wyświetlacza do Arduino
  • Działanie wyświetlacza
  • Przygotowanie zdjęć do wyświetlenia
  • Wgrywanie zdjęć na kartę sd
  • Wyświetlanie zdjęć
  • Prezentacja działającego wyświetlacza
  • Pliki do pobrania

Krótki opis

Kolorowy wyświetlacz LCD TFT o przekątnej 1,8″ i rozdzielczości: 128 x 160 px. Ekran oparty na sterowniku ST7735S pracuje z napięciem 3,3 V. Komunikuje się poprzez SPI.

Specyfikacja

  • Sterownik: ST7735S
  • Interfejs: SPI
  • Kolor wyświetlacza: RGB, 65K
  • Rozdzielczość: 128 x 160 px
  • Podświetlenie: LED
  • Napięcie zasilania: 3,3 V
  • W zestawie z wyświetlaczem są przewody połączeniowe
  • Wymiary: 56,5 x 34 mm

Podłączenie wyświetlacza do arduino

Zaczniemy od podłączenia zasilania, VCC wpinamy do 5V, GND do GND. Zasilanie mamy gotowe, teraz zajmiemy się resztą, CS podłączamy do pinu 10, RESET do 9, A0 do 8. Teraz SCL musi być podłączony na Arduino Uno/Duemilanove/328-based do pinu digital 13. Na mega, jest to digital 52 na Leonardo/Due pin ICSP-3. Przy pinie SDA sytuacja będzie podobna na Arduino Uno/Duemilanove/328-based, będzie to digital 11. Na mega, jest to digital 51 na Leonardo/Due jest toICSP-4. Ostatni pin wyświetlacza to LED, podłączamy go do A0, będzie służył do ustawiania jego jasności.

Teraz zajmiemy się połączeniem czytnika kart sd, który jest już wbudowany w nasz wyświetlacz. SD_CS podłączamy do pinu D4, SD_MOSI podłączamy do D11, SD_MISO do D12 i SD_SCK do pinu D13.

Działanie wyświetlacza

Aby przetestować działanie naszego wyświetlacza musimy najpierw wgrać potrzebne biblioteki, najlepiej wgrać już wszystkie, przydadzą się nam one w dalszym etapie, możecie je pobrać z samego dołu artykułu.

Zaczniemy od wybrania przykładu z biblioteki Adafruit ST7735 and ST7789 w następujący sposób

Należy wgrać powyższy przykład, dopisać w funkcji stetup analogWrite(A0,255); następnie zobaczyć działanie naszego wyświetlacza, jeżeli nic się nie wyświetla, należy sprawdzić podłączenie.

Przygotowanie zdjęć do wyświetlenia

Aby wyświetlić zdjęcia, musimy je najpierw odpowiednio przygotować, po pierwsze musimy ustawić odpowiedni rozmiar, po drugie trzeba zapisać zdjęcie jako bmp. Wielkość jak i zapis w rozszerzeniu bmp wykonamy za pomocą painta. Wchodzimy do niego, ładujemy nasze zdjęcie i klikamy zmień rozmiar.

Następnie ustawiamy odpowiedni rozmiar naszej grafiki i pamiętajmy o tym, aby odznaczyć okienko “Zachowaj współczynnik proporcji”

Nasza grafika powinna się przeskalować, został nam tylko odpowiedni zapis, aby to zrobić klikamy plik -> zapisz jako -> obraz bmp

Przy wyświetleniu się okna zapisz jako, upewniamy się, że jest to rozszerzenie bmp i mapa 24 bitowa. Jeżeli jest to inna mapa niż 24 bitowa, należy rozwinąć listę i wybrać tą odpowiednią.

Po wykonaniu tych czynności możecie wgrać plik na swoją kartę sd.

Wgrywanie zdjęć na kartę sd

Aby wgrać pliki na kartę sd wystarczy zapisać je w odpowiedniej rozdzielczości, tak jak robiliśmy to wcześniej oraz plik musi być z rozszerzeniem bmp. Gdy te warunki mamy spełnione, przyjrzyjmy się naszej karcie, najlepiej żeby była ona w systemie plików FAT16 lub FAT32. Dobrze by było, aby karta nie przekraczała również 8GB, ale zawsze można spróbować z większą lub z innym systemem plików, lecz wtedy nie ma gwarancji działania. Przed wgraniem najlepiej taką kartę sformatować w bardzo prosty sposób

Klikamy prawym przyciskiem myszki w naszą kartę, następnie formatuj

Wyświetli nam się okno, wybieramy odpowiedni system plików, po czym dajemy rozpocznij

Po zakończeniu formatowania, wgrywamy pliki na naszą kartę, wystarczy je wrzucić, nie tworzymy żadnych folderów.

Wyświetlanie zdjęć

Do wyświetlania zdjęć wykorzystamy gotowy przerobiony przeze mnie przykład z Adafruit ImageReader, dodatkowo pobierzcie też zestaw zdjęć z samego dołu artykułu, które są odpowiednio przygotowane i wgrajcie je na swoją kartę.

Po wgraniu zdjęć kopiujemy kod poniżej i wgrywamy do arduino

#include <Adafruit_GFX.h>         // Core graphics library
#include <Adafruit_ST7735.h>      // Hardware-specific library
#include <SdFat.h>                // SD card & FAT filesystem library
#include <Adafruit_SPIFlash.h>    // SPI / QSPI flash library
#include <Adafruit_ImageReader.h> // Image-reading functions

// Comment out the next line to load from SPI/QSPI flash instead of SD card:
#define USE_SD_CARD

// TFT display and SD card share the hardware SPI interface, using
// 'select' pins for each to identify the active device on the bus.

#define SD_CS    4 // SD card select pin
#define TFT_CS  10 // TFT select pin
#define TFT_DC   8 // TFT display/command pin
#define TFT_RST  9 // Or set to -1 and connect to Arduino RESET pin

#if defined(USE_SD_CARD)
  SdFat                SD;         // SD card filesystem
  Adafruit_ImageReader reader(SD); // Image-reader object, pass in SD filesys
#else
  // SPI or QSPI flash filesystem (i.e. CIRCUITPY drive)
  #if defined(__SAMD51__) || defined(NRF52840_XXAA)
    Adafruit_FlashTransport_QSPI flashTransport(PIN_QSPI_SCK, PIN_QSPI_CS,
      PIN_QSPI_IO0, PIN_QSPI_IO1, PIN_QSPI_IO2, PIN_QSPI_IO3);
  #else
    #if (SPI_INTERFACES_COUNT == 1)
      Adafruit_FlashTransport_SPI flashTransport(SS, &SPI);
    #else
      Adafruit_FlashTransport_SPI flashTransport(SS1, &SPI1);
    #endif
  #endif
  Adafruit_SPIFlash    flash(&flashTransport);
  FatFileSystem        filesys;
  Adafruit_ImageReader reader(filesys); // Image-reader, pass in flash filesys
#endif

Adafruit_ST7735      tft    = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
Adafruit_Image       img;        // An image loaded into RAM
int32_t              width  = 0, // BMP image dimensions
                     height = 0;

void setup(void) {

  analogWrite(A0,255);

  ImageReturnCode stat; // Status from image-reading functions

  Serial.begin(9600);
#if !defined(ESP32)
  while(!Serial);       // Wait for Serial Monitor before continuing
#endif

  tft.initR(INITR_BLACKTAB); // Initialize screen

  // The Adafruit_ImageReader constructor call (above, before setup())
  // accepts an uninitialized SdFat or FatFileSystem object. This MUST
  // BE INITIALIZED before using any of the image reader functions!
  Serial.print(F("Initializing filesystem..."));
#if defined(USE_SD_CARD)
  // SD card is pretty straightforward, a single call...
  if(!SD.begin(SD_CS, SD_SCK_MHZ(10))) { // Breakouts require 10 MHz limit due to longer wires
    Serial.println(F("SD begin() failed"));
    for(;;); // Fatal error, do not continue
  }
#else
  // SPI or QSPI flash requires two steps, one to access the bare flash
  // memory itself, then the second to access the filesystem within...
  if(!flash.begin()) {
    Serial.println(F("flash begin() failed"));
    for(;;);
  }
  if(!filesys.begin(&flash)) {
    Serial.println(F("filesys begin() failed"));
    for(;;);
  }
#endif
  Serial.println(F("OK!"));

  // Fill screen blue. Not a required step, this just shows that we're
  // successfully communicating with the screen.
  tft.fillScreen(ST7735_BLUE);
}

void loop() {
    reader.drawBMP("/reziorek1.bmp", tft, 0, 0);
    delay(2000);
    reader.drawBMP("/reziorek2.bmp", tft, 0, 0);
    delay(2000);
    reader.drawBMP("/reziorek3.bmp", tft, 0, 0);
    delay(2000);
}

Aby zmienić zdjęcia wystarczy zamiast reziorek.bmp wpisać swoją nazwę zdjęcia, możecie również dodać kilka innych do wyświetlenia, wystarczy skopiować powyższą linijkę i wkleić, możecie też zmienić czas zmiany zdjęcia, zwiększając lub pomniejszając liczbę milisekund w delay’u.

Prezentacja działającego wyświetlacza

Pliki do pobrania

Sticky
Możliwość komentowania Podłączenie i zaprogramowanie wyświetlacza LCD TFT – 1.8′ – SPI – 128x160px dla Arduino została wyłączona
Adrian Wojtala

Adrian Wojtala

Ma 21 lat. Studiuje informatykę na Uniwersytecie DSW, ukończył technikum o profilu technik-informatyk. Interesuje się programowaniem i w przyszłości ma plan zostać back-end developerem. Swoją przygodę z Arduino rozpoczął podczas praktyk od września 2021 r.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.