Arduino a 2.4" LCD TFT Shield (aitendo UL024TF)

 

 

Dnes jsem dostal k otestování od ptshop.cz LCD Shield pro Arduino s označením “aitendo UL024TF”. Jedná se o 2.4″ velký TFT displej s dotykovým panelem a integrovaným slotem pro microSD. Je osazen řadičem ILI9325

     Pokusíme se tedy displej oživit. Pro spávnou funkci a základní zobrazení bude zapotřebí stáhnout knihovnu Adafruit_TFTLCDAdafruit_GFX. Mohli by jsme hned použít o otesotání příklad z knihovny Adafruit_TFTLCD – “graphicstest”, ale byli by jste zklamani. Příklad využívá příkaz pro identifikaci čipu, který mi ovšem musíme nastavit manuálně. Tak si tedy do Arduina nahrajte prošku upravený příklad pro grafický test:

 

Pokud vidíte vykreslování něčeho na displeji, tak máte vyhráno. K test si ještě můžete zapnout SerialMonitor, který Vám vypíše nějaký text, velikost displeje v pixelech a hlášku, že nenašel ID čipu, který displej řídí a proto jsme ho museli zadat ručně.

     Aby jsme si s displejem trošku vyhráli, nejdříve ukáži minimum kódu, aby jste displej zprovoznili:

Jak vidíte tak diplej v programu pouze vyplní obrazovku modrou barvou. Já tedy i napíšu ostatní příkazy,  které jsou obsaženy v knihovně Adafuit_GFX a Adafruit_TFTLCD:

  • drawPixel(int16_t x, int16_t y, uint16_t color);
  • drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
  • drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
  • drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
  • drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
  • fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
  • fillScreen(uint16_t color);
  • invertDisplay(boolean i);
  • drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
  • drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color);
  • fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
  • fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color);
  • drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
  • fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
  • drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
  • fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
  • drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);
  • drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color, uint16_t bg);
  • drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);
  • drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size);
  • setCursor(int16_t x, int16_t y);
  • print(string s);
  • println(string s);
  • setTextColor(uint16_t c);
  • setTextColor(uint16_t c, uint16_t bg);
  • setTextSize(uint8_t s);
  • setTextWrap(boolean w);
  • setRotation(uint8_t r);
     Sami s příkazů odvodíte co mají dělat, tak vytvoření jednoduchého programu bude hračkou. Dnes jsme si zprovoznili samotný display a v příštím díle si ukážeme jak naprogramovat a nastavit dotykový panel na displeji. Ješte jako bonus pro poděkovaní za zapůjčení firmě PTshop.cz, krátký program pro zobrazení textu:

3 Komentářů

  1. martin83

    podarilo se zprovoznit displej ale ze vzoroveho prikladu to vypise jen cast a zbytek radku zacne na tretine radku. takze tam mam dva sloupky textu kery na sebe sice navazuje ale jsou mezi nima mezery

  2. Blazik

    Zdravim, na tom tft modulu neni pin LCD_CD. A neni ani na vasem obrazku, poradite mi co s tim ? Dekuji

  3. Waldes

    Dobrý deň.
    Skúsil som tú krátku verziu testu, ktorá ma len vysvietiť na modro a vyhlasuje mi to tieto chyby:

    Arduino: 1.8.5 (Windows 7), Vývojová doska:”Arduino/Genuino Uno”

    In file included from C:\Users\Beatka\Documents\Arduino\test1\test1.ino:1:0:

    C:\Users\Beatka\Documents\Arduino\libraries\Adafruit_Circuit_Playground/Adafruit_GFX.h:60:3: warning: #warning “The SD library was not found. loadImage() and image() won’t be supported.” [-Wcpp]

    #warning “The SD library was not found. loadImage() and image() won’t be supported.”

    ^

    C:\Users\Beatka\Documents\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp: In member function ‘int Adafruit_CPlay_Mic::peak(uint16_t)’:

    C:\Users\Beatka\Documents\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp:28:37: error: ‘analogPinToChannel’ was not declared in this scope

    channel = analogPinToChannel(4); // Pin A4 to ADC channel

    ^

    C:\Users\Beatka\Documents\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp: In member function ‘void Adafruit_CPlay_Mic::capture(int16_t*, uint8_t)’:

    C:\Users\Beatka\Documents\Arduino\libraries\Adafruit_Circuit_Playground\utility\Adafruit_CPlay_Mic.cpp:89:37: error: ‘analogPinToChannel’ was not declared in this scope

    channel = analogPinToChannel(4); // Pin A4 to ADC channel

    ^

    exit status 1
    Nastala chyba pri kompilácii pre dosku Arduino/Genuino Uno.

    Som začiatočník tak sa zatiaľ ešte úplne neorientujem. Čo mám urobiť ?

Napsat komentář

Translate »