# TFT screen ## Prequesites To use the TFT screen, you need to install the following libraries: ``` SPI.h , Adafruit_GFX.h, Adafruit_ST7796S_kbv.h ``` ## Programming the screen To program the screen we need to first declare all the pins and give it to the Adafruit_ST7796S_kbv.h library. Then we need to initialize the screen and we can start using it. ```cpp #define TFT_CS 14 #define TFT_DC 13 #define TFT_RST 12 #define MOSI 11 #define SCK 10 #define MISO 9 //simplify the name of the library and feed all the correct pins to it Adafruit_ST7796S_kbv tft = Adafruit_ST7796S_kbv(TFT_CS, TFT_DC, MOSI, SCK, TFT_RST, MISO); ``` ## Drawing on the screen To draw on the screen we can use the following functions: ```cpp tft.fillScreen(0x0000); //clear the screen tft.fillRect(0, 0, 240, 240, 0xFFFF); //draw a white rectangle tft.fillCircle(120, 120, 50, 0xF800); //draw a red circle tft.fillTriangle(0, 0, 240, 240, 0, 240, 0x1F); //draw a blue triangle tft.fillRoundRect(0, 0, 240, 240, 10, 0xF81F); //draw a pink rounded rectangle tft.drawChar(120, 120, 'A', 0xFFFF, 0x0000, 2); //draw a character tft.setTextSize(2); //set the text size tft.setTextColor(0xFFFF); //set the text color tft.setCursor(0, 0); //set the cursor tft.println("Hello World!"); //print a string ``` To write Hello world on the screen we can use the following code: ```cpp tft.fillScreen(0x0000); //clear the screen tft.setTextSize(2); //set the text size tft.setTextColor(0xFFFF); //set the text color tft.setCursor(0, 0); //set the cursor so it starts at the top right, you can also make this other numbers to change the position tft.println("Hello World!"); //print a string ``` To clear the screen for new text you can use the following code: ```cpp tft.fillScreen(0x0000); //clear the screen ``` ## Wiring You can connect the wires to any pin except the vcc and the ground. The vcc and ground need to be connected to the 3.3v and ground of the esp32. The other pins can be connected to any pin of the esp32. ![TFT screen diagram](../assets/imagesSp2/fritzingscreen.png) We aren't using the cs2 and the pen pin because we arent utilizing the touch function of the screen. ```mermaid classDiagram writeText <|-- Adafruit_ST7796S_kbv loop <-- writeText class writeText{ +text +color +size +posx +posy +writeText() } class Adafruit_ST7796S_kbv{ +fillScreen() +fillRect() +fillCircle() +fillTriangle() +fillRoundRect() +drawChar() +setTextSize() +setTextColor() +setCursor() +println() } ``` ## Sources * https://www.tinytronics.nl/en/displays/tft/4-inch-tft-display-320*480-pixels-with-touchscreen-spi-st7796s Source for Driver * https://github.com/prenticedavid/Adafruit_ST7796S_kbv Download link for the library