
The TFT display is a kind of LCD that is connected to each pixel using a transistor and it features low current consumption, high-quality, high-resolution and backlight. This 2.8-inch full color LCD has a narrow PCB display. The resolution is 320×280 pixels and it has a four-wire SPI interface and white backlight.

/*==============================================================* Created by Ing. Piero Cimule Troise* Contact Info: piero.cimule@gmail.com* IG: @skylinkCE* Weather Station Components:* ELEGO 2.8" TFT Tounch Screen Shield* Arduino Mega 2560 Board* Jumpers & Wires* DTH11 Temperture & Humidity Sensor* BreadBoard*// IMPORTANT: Elegoo_TFTLCD LIBRARY MUST BE SPECIFICALLY// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.*==============================================================*/// Libraries Declaration#include // Core graphics library#include // Hardware-specific library#include // Touch Screen Library//#include //Adafruit Library Sensor#include //DTH Library#include //DTH Library// The control pins for the LCD can be assigned to any digital or// analog pins...but we"ll use the analog pins as this allows us to// double up the pins with the touch screen (see the TFT paint example).#define LCD_CS A3 // Chip Select goes to Analog 3#define LCD_CD A2 // Command/Data goes to Analog 2#define LCD_WR A1 // LCD Write goes to Analog 1#define LCD_RD A0 // LCD Read goes to Analog 0#define LCD_RESET A4 // Can alternately just connect to Arduino"s reset pin// Color definitions#define BLACK 0x0000 /* 0, 0, 0 */#define NAVY 0x000F /* 0, 0, 128 */#define DARKGREEN 0x03E0 /* 0, 128, 0 */#define DARKCYAN 0x03EF /* 0, 128, 128 */#define MAROON 0x7800 /* 128, 0, 0 */#define PURPLE 0x780F /* 128, 0, 128 */#define OLIVE 0x7BE0 /* 128, 128, 0 */#define LIGHTGREY 0xC618 /* 192, 192, 192 */#define DARKGREY 0x7BEF /* 128, 128, 128 */#define BLUE 0x001F /* 0, 0, 255 */#define GREEN 0x07E0 /* 0, 255, 0 */#define CYAN 0x07FF /* 0, 255, 255 */#define RED 0xF800 /* 255, 0, 0 */#define MAGENTA 0xF81F /* 255, 0, 255 */#define YELLOW 0xFFE0 /* 255, 255, 0 */#define WHITE 0xFFFF /* 255, 255, 255 */#define ORANGE 0xFD20 /* 255, 165, 0 */#define GREENYELLOW 0xAFE5 /* 173, 255, 47 */#define PINK 0xF81F#define YP A3 // must be an analog pin, use "An" notation!#define XM A2 // must be an analog pin, use "An" notation!#define YM 9 // can be a digital pin#define XP 8 // can be a digital pin//Touch For New ILI9341 TP#define TS_MINX 120#define TS_MAXX 900#define TS_MINY 70#define TS_MAXY 920#define MINPRESSURE 10#define MAXPRESSURE 1000//Screen DeclarationElegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);//TouchScreen Area DeclarationTouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);//Button object declarationElegoo_GFX_Button buttons;//Custiom Variablesuint16_t identifier; //Store Screen Identifier#define DHTPIN 52 //what pin we"re connected to DTH Sensor#define DHTTYPE DHT11 //DHT 11DHT dht(DHTPIN, DHTTYPE); //DTH Object Declaration//Variablesunsigned long startMillis; //some global variables available anywhere in the programunsigned long currentMillis;const unsigned long period = 5000; //the value is a number of millisecondsint tempUnit; //Temperature Unit "1" Celsius "2" Farenheitint currentPage; //Current Page indicator "1" First Page, "2" Second Pagevoid setup(void) {dht.begin();Serial.begin(9600);Serial.println(F("WEATHER Station"));Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());drawInitialScreen();// TEMP UNIT BOXtempUnit = 0; // Celsius DefaultcurrentPage = 1; // First Page DefaultdrawTempetarure(); // Draw Temperature BoxreadTempSensor(); // Read DHT11 SensorstartMillis = millis(); //initial start time}void loop() {//Start Timing to next temperature readcurrentMillis = millis();if (currentMillis - startMillis >= period){readTempSensor();startMillis = currentMillis; //IMPORTANT to save the start time of the current .}//TouchScreen DefinitionTSPoint p = ts.getPoint();//if sharing pins, you"ll need to fix the directions of the touchscreen pinspinMode(XP, OUTPUT);pinMode(XM, OUTPUT);pinMode(YP, OUTPUT);//Touch Screen Reviewif (p.z > MINPRESSURE && p.z < MAXPRESSURE) {Serial.print("PRESSURE: "); Serial.println(p.z);// scale from 0->1023 to tft.widthp.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);p.y = (tft.height() - map(p.y, TS_MINY, TS_MAXY, tft.height(), 0));//Print TouchScreen area seletedSerial.print("P X"); Serial.print(p.x);Serial.print("P Y"); Serial.print(p.y);if (p.x >= 145 && p.x <= 245 && p.y >= 110 && p.y <= 220 && currentPage == 1) {Serial.println("Change Temperature Unit Box"); Serial.println(tempUnit);if (tempUnit == 0) {tempUnit = 1;drawTempetarure();}else {tempUnit = 0;drawTempetarure();}readTempSensor();}else if (p.x >= 15 && p.x <= 40 && p.y >= 80 && p.y <= 220 && currentPage == 1) {Serial.println("Next Page Selected");currentPage = 2;drawDetailScreen();readTempSensor(); // Read DHT11 Sensor}else if (p.x >= 5 && p.x <= 30 && p.y >= 12 && p.y <= 55 && currentPage == 2) {Serial.println("Next Page Selected");tempUnit = 0; // Celsius DefaultcurrentPage = 1; // First Page DefaultdrawInitialScreen();drawTempetarure(); // Draw Temperature BoxreadTempSensor(); // Read DHT11 Sensor}}}void drawInitialScreen() {tft.reset();getIdentifierScreen();tft.begin(identifier);tft.setRotation(3);tft.fillScreen(BLACK);tft.setCursor(30, 10);tft.setTextColor(RED); tft.setTextSize(3);tft.println("WEATHER Station");tft.drawLine(10, 40, 310, 40, CYAN);// TEMP & HUMD Boxtft.drawRect(10, 45, 125, 185, BLUE);tft.setCursor(15, 50);tft.setTextColor(CYAN); tft.setTextSize(2);tft.println("TEMP:");tft.setCursor(15, 140);tft.println("HUMIDITY:");// DIVIDERS LINEStft.drawLine(140, 45, 140, 230, CYAN);tft.drawLine(145, 130, 310, 130, BLUE);tft.drawLine(145, 135, 310, 135, CYAN);//BUTTON NEXT PAGE// create buttons//CLASSBUTTON[index].initButton( &tft, BUTON_X_pos, BUTTON_Y_pos, X_WIDTH, Y_LARGE, BORDER_COLOR, TEXT_COLOR, BUTTON_COLOR, TEXT, FONT_SIZE );buttons.initButton( &tft, 275, 210, 70, 30, DARKGREY, WHITE, DARKGREY, "Detail", 1 );buttons.drawButton(true);}void drawDetailScreen() {tft.reset();getIdentifierScreen();tft.begin(identifier);tft.setRotation(3);tft.fillScreen(BLACK);tft.setCursor(50, 10);tft.setTextColor(RED); tft.setTextSize(3);tft.println("Weather Detail");tft.drawLine(10, 40, 310, 40, CYAN);tft.setCursor(100, 50);tft.setTextColor(GREEN); tft.setTextSize(2); tft.println("Temperature");// DIVIDERS LINEStft.drawLine(160, 70, 160, 230, CYAN);tft.drawLine(10, 135, 310, 135, CYAN);tft.setCursor(40, 140);tft.setTextSize(2); tft.println("Humidity");tft.setCursor(180, 140); tft.println("Heat Index");//BUTTON PREVIOUS PAGE// create buttons//CLASSBUTTON[index].initButton( &tft, BUTON_X_pos, BUTTON_Y_pos, X_WIDTH, Y_LARGE, BORDER_COLOR, TEXT_COLOR, BUTTON_COLOR, TEXT, FONT_SIZE );buttons.initButton( &tft, 50, 220, 70, 30, DARKGREY, WHITE, DARKGREY, "Previous", 1 );buttons.drawButton(true);}void getIdentifierScreen() {identifier = tft.readID();if (identifier == 0x9325) {Serial.println(F("Found ILI9325 LCD driver"));} else if (identifier == 0x9328) {Serial.println(F("Found ILI9328 LCD driver"));} else if (identifier == 0x4535) {Serial.println(F("Found LGDP4535 LCD driver"));} else if (identifier == 0x7575) {Serial.println(F("Found HX8347G LCD driver"));} else if (identifier == 0x9341) {Serial.println(F("Found ILI9341 LCD driver"));} else if (identifier == 0x8357) {Serial.println(F("Found HX8357D LCD driver"));} else if (identifier == 0x0101){identifier = 0x9341;Serial.println(F("Found 0x9341 LCD driver"));} else {identifier = 0x9341;}}void drawTempetarure() {tft.fillRect(145, 45, 166, 85, BLUE);tft.setCursor(210, 50);tft.setTextColor(RED); tft.setTextSize(7);Serial.println(tempUnit);if (tempUnit == 0) {tft.println("C");tft.setCursor(205, 120);tft.setTextSize(1);tft.println("Celsius");}else {tft.println("F");tft.setCursor(195, 120);tft.setTextSize(1);tft.println("Fahrenheit");}tft.setCursor(190, 50);tft.setTextSize(2);tft.println("o");}void readTempSensor() {// Reading temperature or humidity takes about 250 milliseconds!// Sensor readings may also be up to 2 seconds "old" (its a very slow sensor)float h = dht.readHumidity();// Read temperature as Celsius (the default)float t = dht.readTemperature();// Read temperature as Fahrenheit (isFahrenheit = true)float f = dht.readTemperature(true);// Check if any reads failed and exit early (to try again).if (isnan(h) || isnan(t) || isnan(f)) {Serial.println(F("Failed to read from DHT sensor!"));return;}// Compute heat index in Fahrenheit (the default)float hif = dht.computeHeatIndex(f, h);// Compute heat index in Celsius (isFahreheit = false)float hic = dht.computeHeatIndex(t, h, false);if (currentPage == 1) {//Draw blue window for Temptft.drawRect(10, 45, 125, 185, BLUE);tft.setTextColor(CYAN); tft.setTextSize(3);if (tempUnit == 0) {//Shows Temperature in Celsiustft.setCursor(15, 70);tft.fillRect(15, 70, 110, 70, BLACK);tft.println(t);}else {//Shows Temperature in Farenheittft.setCursor(15, 70);tft.fillRect(15, 70, 110, 70, BLACK);tft.println(f);}tft.setCursor(15, 160);tft.fillRect(15, 160, 110, 50, BLACK);tft.println(h);tft.setCursor(110, 160);tft.println("%");} else {tft.setTextColor(CYAN); tft.setTextSize(3);//Shows Temperature in Celsiustft.setCursor(30, 80);tft.fillRect(30, 80, 120, 30, BLACK);tft.println(t);tft.setCursor(130, 80); tft.println("C");//Shows Temperature in Farenheittft.setCursor(190, 80);tft.fillRect(190, 80, 120, 30, BLACK);tft.println(f);tft.setCursor(290, 80); tft.println("F");//Shows Humiditytft.setCursor(30, 170);tft.fillRect(30, 170, 120, 30, BLACK);tft.println(h);tft.setCursor(130, 170); tft.println("%");//Shows Heat Indextft.setTextColor(ORANGE); tft.setTextSize(2);tft.setCursor(210, 170);tft.fillRect(210, 170, 100, 30, BLACK);tft.println(hif); tft.setCursor(280, 170); tft.println("F");tft.setCursor(210, 200);tft.fillRect(210, 200, 100, 30, BLACK);tft.println(hic); tft.setCursor(280, 200); tft.println("C");}/*//Print DTH11 ValuesSerial.print(F("Humidity: "));Serial.print(h);Serial.print(F("% Temperature: "));Serial.print(t);Serial.print(F("°C "));Serial.print(f);Serial.print(F("°F Heat index: "));Serial.print(hic);Serial.print(F("°C "));Serial.print(hif);Serial.println(F("°F"));*/}

TFT Touch Shield V2.0 is a resistive touch screen, compatible with Arduino/Seeeduino/Arduino Mega/SAMD21 platforms. It can be used as display device or sketch pad. Compared with the previous version, 2.8""TFT Touch Shield V1.0, we upgraded the screen driver to a more professional chip, ILI9341 driver, providing different pin-saving SPI communication without sacrificing the data transmitting speed. Due to the communication method change, programs developed for the original version are needed for modification before being transplanted to the new version. With a SD card module integrated on this shield, this shield reserves capability for other expansions of your project.
We recommend using Seeed_Arduino_LCD with internal flash chips larger than 128k. If you have a smaller flash device, I recommend using the TFT_Touch_Shield_V2.
Step1. Download and Install Seeed_Arduino_LCD. if you don"t know how to install an Arduino library, please refer to the tutorial (HOW TO INSTALL AN ARDUINO LIBRARY).

Enclosure for Adafruit 2.8" TFT LCD with a GoPro mount on the rear for use with all of your GoPro accessories! The touchscreen is held in place with a separate fastening piece to ensure it does not move or rattle. Please note that this enclosure does...
Borrowed some parts from others and did this mock-up to share as I"m trying to model and build a 3D enclosure for a stack of shields. ... Pin headers and sockets may be off slightly.
I needed an accurate model of the 2.8" TFT shield for the Arduino. ...It was a bit of a challenge as these are not manufactured to the tightest tolerances so I added some standard deviation to the model so that it should fit most use cases.- Pinheader...
Case for the screen 2.8 inches 320x240 such as 240x320 2.8" SPI TFT LCD Touch Panel Serial Port Module With PBC ILI9341 2.8 Inch SPI Serial White LED Display with Touch Pen
A small mountable holder for a fasttech LCD module. Mounting pins are a little tight but can be snapped off if not needed. Mount holes are designed for assorted leg or spacer designs. Holes are 5mm dia, 34mm apart and hole centre 5.5mm from edge if...
"lcd hinge" is for behind the lcd. "base hinge" fits into the duo case pins and takes the lcd hinge shaft My hinge snapped when I tried to jam the shaft into it, blue pvc pipe glue visible on assembled photos.. ...does the job.
This is the first version of a case for a 2.2" SPI TFT LCD Display module. I have to add mount points to mount the display. Then I have to deside how to wire it.
This is a front case to hold and protect my SPI TFT 2.8" display (touchscreen display with the ILI9341 chip). ...It has some holes in the laterals to pass the wires and change the SD card.
As an example i used the color weather station of Dani Eichhorn - https://blog.squix.org/2016/10/esp8266-weather-station-color-code-published.html (Note I used a slightly different TFT, a TJCTM24024-SPI which has the same electronics but is 2.4"...
A small, thin and light 1.8 inch TFT LCD wall mount. The mount is composed out of two pieces, a wall bracket that screws into the wall (or other panel) and a cover which hides the screws and holds the display in place. To route the display cable you...

Looking for a bigger screen to interface with the Arduino Uno? Bigger than the 2.4″ TFT LCD screen, this shield is able to display a little more information than the 2.4″ screen. In this tutorial, we’ll be looking at how we would interface the 2.8″ TFT LCD Touchscreen Shield with an Arduino Uno.
As this is an Arduino Shield, just attach the shield to the Arduino Board. (Uno, Mega, etc.) But in this tutorial, we’ll be connecting the shield to an Arduino Uno.
We’ll be using Adafruit’s GFX and TFTLCD library to interface the LCD shield with Arduino Uno. Download the library, extract the rspective folders and place it in your Arduino libraries directory.
Before using the TFT LCD Shield, we should first calibrate the touch screen. As there weren’t any calibration sketch provided in the librarie’s example, I wrote a simple calibration sketch to calibrate the touch screen. With this sketch, adapted from Adafruit’s tftpaint example sketch, it will display the offset that will remap the values of the raw values of the TFT resistors to the coordinates of the screen.
The values displayed at the end of the calibration will be used to determine the TS_MINX,TS_MINY, TS_MAXX & TS_MAXY variables. These variables are actually the resistance value of the TFT screen, which will be “converted” into coordinates relative to the screen:p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
Upload the following code below to obtain the offset values. Remember to note down the respective values (TS_MINX,TS_MINY, TS_MAXX & TS_MAXY), as it is needed for the next section of the tutorial.// Paint example specifically for the TFTLCD breakout board.
After the calibration is done and the (maximum & minimum) X/Y resistance values recorded, we’ll proceed on to running the tftpaint demo. Open up tftpaint sketch from Adafruit’s TFTLCD examples.
When you draw something on the touch screen with the original sketch, the X coordinates will be inverted. To fix it, we’ll have to flip the mapping function from :// scale from 0->1023 to tft.width
Open up your serial monitor & see whther the library is able to detect the driver. If the Serial Monitor returns something like this:Unknown LCD driver chip: 0x00
You can try hard-coding the driver of the LCD Shield specific to the shield you have. You can figure it through these following methods:Turn to the back of the shield & look for the chip ID
After you have figured out the driver ID, we’ll hard code the driver ID. Modify this line of code (at line 92) from this:uint16_t identifier = tft.readID();

This is a versatile and Arduino/Seeeduino/Arduino Mega compatible resistive touch screen shield which can be used as display device, or sketch pad for user input/interface.
Compared with the previous version (2.8" TFT Touch Shield V1.0) we improved the screen driver with a professional chip (ILI9341) to provide the pin-saving SPI communication protocol without sacrificing the data transmission speed.
Circles isn"t the only thing our library can help you draw, we also have a lines, number, rectangle, and many more examples. Check those out as well to become a pro with the shield.
Function Description: The drawCircle function draws an empty circle with the center at the coordinates poX, and poY. The circle will be of radius r and the border color will be color. The color parameter is a 16-bit Red-Geen-Blue (RGB) integer, in the example code above the words YELLOW, CYAN, RED, and BLUE are defined as integers in the TFTv2.h file.
The TFT Touch Shield"s backlight is on by default since its control circuit is directly powered by the 5V pin. If, however, you wish to control the backlight"s on/off state using the Arduino Digital I/O pin 7, a simple modification will have to be made:
Combining Arduino and other shield modules, we make a mobile phone named Arduino Phone. Meanwhile, we printed a shell for it with the 3D printer. Although it"s not such fine as you think, even a little bit clunky, it"s still very cool. That is the point this is a cell phone made by ourselves.