Lekce 31 – Arduino a SPI TFT displej 128×160

     Pro dnešní tutoriál jsem si si vybral displej TFT o velikosti 1.8″ s rozlišením 125×160 řizení pomocí SPI. Připojení bude velice snadné pomocí 4 vodičů + napájení a podsvětlení 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ý displej. 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);

Napsat komentář

Translate »