Welcome to another Arduino video tutorial! In this video, we are going to take a first look at this 2.8” Color TFT Touch display! It is a big, low-cost touch display which is very easy to use. Without any further delay, let’s get started.

Intro to the Arduino 2.8″ ILI9341 Tutorial

Hello guys, I am Nick and welcome to educ8s.tv a channel that is all about DIY electronics projects with Arduino, Raspberry Pi, ESP8266, ESP32 and other popular boards. If you are new here, welcome, be sure to subscribe and check the previous videos on the channel.

Today we are going to learn how to drive the 2.8” Touch display with the ILI9341 driver with an Arduino Uno and an ESP32 board. First of all, let’s take a close look at the display itself. The display is big, and it offers a resolution of 320×240 pixels. Compared to one of my favorites displays, the 1.8” Color TFT display you can see it a lot larger. The screen also offers touch functionality which is an added bonus and an SD card slot at the back. It uses the SPI interface, so the connection with the Arduino is very straightforward. The cost of the display is relatively low; it costs around 11$ which in my opinion is a fair price for what this display offers.

——————–
WHERE TO BUY
——————–

2.8″ Inch Display: https://educ8s.tv/part/28ILI9341

Arduino Uno: https://educ8s.tv/part/ArduinoUno

Resistors: https://educ8s.tv/part/Resistors

Arduino Pro Mini: https://educ8s.tv/part/ArduinoProMini

ESP32: https://educ8s.tv/part/ESP32

STM32: https://educ8s.tv/part/STM32

DS3231 RTC: https://educ8s.tv/part/DS3231

Breadboard: https://educ8s.tv/part/SmallBreadboard

Wires: https://educ8s.tv/part/Wires

Full disclosure: All of the links above are affiliate links. I get a small percentage of each sale they generate. Thank you for your support!

[adsense]

Another thing I like about this display is that it does not come as a shield like the touch display we were using so far. This way, we can connect the display to any board, the Arduino Pro mini, the STM32, the ESP8266 and the ESP32. This is very important because we now have a low-cost display that we can use with every board. Until now, the only touch display we could use with these boards were the Nextion displays which are more expensive, and to be honest even though I use them from time to time, I don’t really like them.

Connection with the Arduino Uno

Now let’s see how to connect this display to an Arduino Uno. The first 9 pins of the display are the power pins and the SPI pins. So, if we connect only the first 9 pins of the display, we can use it as a regular display without touch functionality. The display uses 3.3-volt logic levels and unfortunately, it is not 5V tolerant. So, we need to use some 10K resistors if we want to drive it with a board that uses 5V logic levels like the Arduino Uno.

We connect the display to the Arduino Uno according to this schematic diagram.

Arduino and the 2.8" ILI9341 Touch Screen

Arduino and the 2.8″ ILI9341 Touch Screen

As you can see, we have connected Vcc to 5V of the Arduino Uno and the SPI pins of the display to the hardware SPI pins of the Arduino Uno. Let’s load a demo sketch now. As you can the 8bit Arduino Uno with only 2KBs of RAM can drive this big display! But as you can see it is very slow in updating the screen. It takes many seconds to update the whole screen which is a pity. It can display text with more speed though. It is obvious that the Arduino Uno is not enough to drive a display with such a high resolution. It is obvious that we need a more powerful board to drive this display effectively.

But can we build a useful project using this display? I wanted to find out, so I decided to build a simple real-time clock and temperature monitor. I added a DS3231 RTC module, and I modified the code of a previous project to use the new bigger display. You can find the code of the project in a link in the description below. The result is not that bad as the demo sketch. The project works fine, but of course, there is a small delay when the values on the screen are updated. In my opinion, this project demonstrates that we can use this display with an 8bit Arduino only on very simple projects that update the screen rarely.

ILI9341 Real Time Clock Project

ILI9341 Real Time Clock Project

Before moving to the more capable ESP32 board, let’s try to use the touch functionality of the display. We connect the remaining 5 pins according to this schematic diagram, and we are ready to upload the second sketch to the board.

ILI9341 Touch Screen Arduino Uno

ILI9341 Touch Screen Arduino Uno

To my surprise, the touch demo works relatively fast! It is a simple sketch in which we draw on the screen using this stylus. I think this result is impressive if we take into consideration that this display is driven by an 8bit board.

ESP32 and the ILI9341 Display

Let’s now connect the display to an ESP32 board. If you are not familiar with it, the ESP32 is a very fast and inexpensive Arduino compatible board. I prepared a detailed review of this board a few months ago; you can watch it by clicking on the card here. Since the ESP32 board uses 3.3V logic levels, we don’t need any resistors to drive the display. So, if we don’t need the touch functionality, we connect the display according to this schematic diagram.

ESP32 ILI9341 Touch Screen

ESP32 ILI9341 Touch Screen

If we upload the same sketch that used before on the Arduino Uno, we can see the ESP32 is extremely fast. It can update the display, draw graphics and complete the demo sketch way faster than the Arduino Uno.

Unfortunately, the touch demo is not compatible with the ESP32 board yet, so I didn’t have the chance to try the touch functionality of the display. I will prepare another video about the ESP32 board and this display soon. First I want to test more libraries and find a touch library that works with the ESP32 chip and build a simple demo sketch. Stay tuned.

Let’s now see the software side of the project. In order to use this display with Arduino, we need to install the Adafruit ILI9341 driver and the familiar Adafruit GFX library if we don’t use the touch functionality. If we want to use the touch functionality, we have also to install the URtouch library. You can find links to all the libraries needed along with the code of the demo programs I showed you in the description below.

——————–
LIBRARIES
——————–

? Adafruit GFX: https://github.com/adafruit/Adafruit-GFX-Library
? Adafruit ILI9341: https://github.com/adafruit/Adafruit_ILI9341
? URtouch: http://www.rinkydinkelectronics.com/library.php?id=92

As a final thought, I believe this display is a great display to use for our future projects. I think I am going to use this display a lot with the ESP32, and STM32 boards because it is easy to use, offers touch functionality and it is relatively inexpensive. I am going to build a complete project around this display soon, to test it even more, and see what is capable of.

I would love to hear your opinion on this display. Have you ever used it in your projects, or are you going o use it in the future? Do you have any project ideas that we could build using this display? Please post your comments below and don’t forget to like the video if you find it useful. Thanks!

——————–
CODE
——————–