Lekce 31 - Arduino a SPI TFT displej 128x160

19.07.2014 12:42

Translate to English

     Pro dnešní tutoriál jsem si si vybral displej TFT o velikosti 1.8" s rozlišením 125x160 řizení pomocí SPI. Připojení bude velice snadné pomocí 4 vodičů + napájení a podsvětlění displeje. Displej obsahuje řadič ST7735R. Jen pro zajímavost uvádím odkaz na jeho datasheet, ale pro zapojení nebude potřeba. Na modulu se nachází i slot na SD kartu, ale to nebude dnes cílem našeho snažení. 

    Pro práci s SPI displejem si stáhneme 2 knihovny. První obsahuje ovládání displeje a stáhnete jí zde a druhá obsahuje grafickou knihovnu a tu najdete zde. Po stažení souborů a jejich rozbalení nakopírujte adresáře do složky "libraries" a jedna důležitá věc na konec. Musíte přejmenovat adresáře tak, aby názvy neobsahovali nepovolené znaky. Názvy obsahují pomlčky a tyto prostředí ArduinoIDE nemá rádo a při restartování programu po načtení knihoven to zahlásí chybu !!! 

Po stažení knihoven si zapojíme samotný diplej. Já jsem pro SPI vybral piny 3 - 7. Zapojte podle tabulky:

TFT Arduino
GND GND
Vcc 3,6 nebo 5V
RESET nezapojeno
AO  6
SDA 4
SCK 5
CS (10) 7
LED+ 3,6V
LED- GND

a nahrajte následující program:

Když se Vám zobrazí text "arduino8.webnode.cz" tam máte vyhráno. Já jsem si pro Vás připravil ještě jeden příklad, kdy jsem k Arduinu připojil analogový senzor světla a vlhkosti zeminy v květině a čidlo DHT11. Zobrazovat budeme tedy 4 hodnoty. Zapojení DHT11 a analogových vstupů je popsáno v minulých lekcích. Program jsem doplnil o funkci, která změní barvu podkladu zobrazované hodnoty na červenou, když klesne pod nastavenou úroveň. Je to jenom pro ukázku, snímání těchto hodnota nemá nějaký vetší smysl. Pozor při této ukázce jsem změnil zapojení SPI (pin 10 až 13)!!!

výstup z programu vypadá asi takto:

Jinak pro grafickou práci s knihovnou můžete využít i další funkce., které vidíte po otevření zdrojových kódu jak ovladače displeje, tak grafické knihovny. Já je tedy uvedu alespoň zkopírováním. Jejich pojmenování v angličtině bude pro Vás vodítkem co jednotlivé funkce dělají.

  virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
 
  virtual void
    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);
 
  void
    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),
    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),
    setTextColor(uint16_t c),
    setTextColor(uint16_t c, uint16_t bg),
    setTextSize(uint8_t s),
    setTextWrap(boolean w),
    setRotation(uint8_t r);
 
Zpět

Diskusní téma: Lekce 31 - Arduini a SPI TFT displej 128x160

Datum
Vložil
Titulek

3.3V displeje

@Michal :) trápim sa s napojením displeja už dlhšie, skúšal som odpory 10k a nič, dal som na tvoju radu a dal som 1k medzi datove linky a nabehlo. Ešte mi bliká displej, ale už aspoň ide. Ako si napojil LCD a VCC, myslím či aj tam si dával nijaký odpor. Dík :D

Datum
Vložil
Titulek

Re: 3.3V displeje

S obvodom CD4050 to ide krásne :)

Datum
Vložil
Titulek

3.3V displeje

funguju v pohode aj na 5V arduine, ale vsetky datove linky treba k pinom pripojit cez 1k rezistory

Datum
Vložil
Titulek

zapojení

Dobrý den,

chtěl bych upozornit, že tabulka zapojení není dobře. Funguje to takto:
sck=4
sda=5
cs=6
ao=7

Datum
Vložil
Titulek

3.3V displeje

Jen bych rád upozornil na displeje prodávané na ebay nebo aukru, které mají 3.3V logiku. S Arduinem bez převodníku nebudou fungovat a hrozí jejich zničení.
Na druhou stranu, zkoušel jsem připojit Arduino Mini Pro 5V na 3V a fungovalo skvěle i s displejem.

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.