There are many tutorials on Arduino shields for 2.4 inch TFT LCD displays. In this road test I apply different tutorials to check the performance and issues of this specific shield: AZ-Delivery 2.4 inch TFT LCD display with resistive 4-wire touchscreen and an integrated SD card reader. AZ-Delivery 2.4 inch TFT LCD display.
What is a TFT LCD Display?TFT LCD is a variant of a liquid-crystal display (LCD) that uses thin-film-transistor (TFT) technology. That improves image quality, better contrast and addressability.
Is this display suitable for the Arduino UNO?Depends on the needs of your project. Arduino UNO processor frequency is low. With the Arduino UNO full-color TFT LCDs are suitable to display simple data and commands. The TFT controller used cannot switch internal display RAM, so you can't use the double buffer technique for animations but still you can only re-draw small sections of screen.
Given the limitations of the Arduino UNO the bigger the display the worse the performance. The size of this display is adequate to meet that compromise between number of pixels, display area and capabilities of the Arduino UNO.
This module consumes most of the resources available in Arduino UNO. This is not a limitation of the module itself. In return, using a parallel interface allows you to quickly update the image. If you want to take advantage of all its functionality (LCD + touch screen + SD card), only pins 0 and 1 (RX and TX, respectively) and pin 19 (A5) remain unused. If the SD card is not used, pins 10, 11, 12 and 13 are additionally available. With a suitable layout, some SPI devices could be connected even if the SD card is used.
It is a very good choice to learn and get started with the Arduino UNO and TFT LCD displays at a low price.
Some alternative displays options for the arduino are 16×2 LCD, NOKIA 5510, OLED DISPLAY, ST7920 GLCD, SEVEN SEGMENT DISPLAY.
What´s in the box?The module arrived well packed and in perfect condition. The board comes in a sealed antistatic bag, with protective foams to prevent the terminals from bending, and all this wrapped with a bubble bag and inside an individual cardboard box. The label on the antistatic bag indicates the controller is an ILI9341.
The build quality is very good. The header pins are already soldered. There is full coverage over the contact area and lead. Thru-hole leads are filled and the solder joints a slight pyramid shape. The surface mounts solder joint and fully cover the contact pad and surround the lead. Leads are not loose or wiggle. The solder doesn't overflow or bridge onto other contact points/pads. Thru-hole solder joints are shiny.
There are no sign of repairs on any component.
The screen and the touch film are perfectly glued. The resistive touch screen does not appear to appreciably affect the optical characteristics.
The PCB silkscreen indicates the main function of each pin, the labels are easy to read, although it does not show labels for the touch screen pins:
- Pin 9 - Touch X+ / LCD_D1
- Pin 17 (A3) - Touch X- / LCD_CS
- Pin 8 - Touch Y- / LCD_D0
- Pin 16 (A2) - Touch Y+ / LCD_RS
The SD card reader is very well located between the USB connector and the power connector, it does not touch either of them as it happens in other lcd tft shield modules and it is easily accessible to insert and remove the SD cards.
On the front it has a very useful K1 button that allows you to reset the Arduino.
The module fits perfectly on the UNO board. Once mounted, the clearance between the USB connector and the LCD module PCB is minimal.
The included stylus is somewhat thin but does the job perfectly.
Connecting the shield to the ArduinoYou can directly use the shield with any arduino uno. In this case we are using an Arduino UNO that exposes all the pins both on the header and on the board. In such a way that you do not need another shield to access the pins not used by the screen
All the header pins are accessible on the board to be able to use them
To connect the shield simply mount the sandwich there is only one valid position.
The SD reader is fully accessible and without touching the usb or power connector
Ready to use!
You can use any Arduino board. But with this one acces to the pin when mounted is more difficult.
Shield
- Compatible with Arduino. 5V compatible, can be used with 3.3V or 5V logic. On-board 3.3 V (300mA LDO controller). The design is very well thought out and fits Arduino UNO perfectly.
- 2x74LVC245A Octal Bus Transceiver With 3-State outputs. This octal bus transceiver is designed for 1.65-V to 3.6-V VCC operation. The LVC245A is designed for asynchronous communication between data buses. The device transmits data from the A bus to the B bus or from the B bus to the A bus, depending on the logic level at the direction-control (DIR) input. The output-enable (OE) input can be used to disable the device so the buses effectively are isolated. Inputs can be driven from either 3.3-V or 5-V devices. This feature allows the use of this device as a translator in a mixed 3.3-V/5-V system environment. This chip solves the problem of how to interface 3.3V logic devices to a 5.0V logic chip such as the Arduino. Most 3.3V devices do not like being run with 5V signals and can be damaged or flaky. The 74LVC245 is designed so that even when it runs at 1.8V, it still happily accepts 5V signals in one pin and converts it to a lower logic level on the opposite pin. It has 8 pipes it can convert but it won't work with bi-directional/pull-up based devices such as I2C or 1-Wire. It does work great for SPI, Serial, Parallel bus, and other logic interfaces.
- The TFT module uses 5-13 digital pins and 0-3 analog pins from Uno, depending on whether the touchscreen and/or SD card are used or not.
- If you want to take advantage of all its functionality (LCD + touch screen + SD card), only pins 0 and 1 (RX and TX, respectively) and pin 19 (A5) remain unused. If the SD card is not used, pins 10, 11, 12 and 13 are additionally available. With a suitable layout, some SPI devices could be connected even if the SD card is used.
Display
- Diagonal LCD TFT Display. 240x320 pixels resolution, 262, 000 colorful different shades, size: 71*52*7mm, 2.4"
ScreenBacklight
- 4 white LED backlight. Can be easily hacked and dimmed using a PWM signal.
DisplayController
- The driver chip for the LCD screen is ILI9341 controller with integrated video GRAM buffer. Operating modes: 8-bit paralell mode.
- The ILI9341 which can control each pixel with a small number of pins. The shield connects ILI9341's data pins 0-7 to Arduino digital pins 2-8 (allowing parallel communication, not SPI). ILI's RESET goes to pin to Arduino analog pin A4.CS (chip select) to A3. RS (CD command/data) to A2. WR and RD to A1 and A0.
SD Card Reader
- Integrated SD Card Reader. The SD card option allows storing a large amount of graphical data.
Reset button
- A little white pushbutton labeled as K1 allows to reset both the Arduino and the shield module.
TouchScreen
Includes a resistive 4-wire touchscreen (touchpad). The touch screen is attached on the surface of the display. Touch screen needs two analog inputs and two digital outputs. It connects through 4 wires, which share arduino pins 8, 9, A2, A3 with the ILI9341 driver. So you can't write to LCD display and read the touch screen in the same time. I. Driver chip is XPT2046.
How does it perform?- The module works perfectly, I've tested it with an Arduino UNO R3 compatible board and Arduino IDE 1.8.13.
- The module fits perfectly on the UNO board. Connecting the module in shield format makes it difficult to access unused pins.
- The backlight provides a uniform background, bright enough to be used in reasonably high ambient lighting conditions. All colors and shapes are 'sharp'.
- The optical characteristics are good, with a wide color gamut and good sharpness. The viewing angle is quite wide and there is no color inversion or other flaws. The screen is brilliant. Colors are bright enough to read the screen well even in daylight.
- Thanks to the 8-bit parallel connection, the image transmission is fast only limited by the performance of the Arduino UNO.
- The resistive touch screen does not appear to appreciably affect the optical characteristics. Works properly, It takes a little pressure with the stylus for it to respond like in old mobile phones. You notice how it sinks into the screen when you press with the stylus. The stylus that comes with the module makes it easy to use if your interface design uses small controls. Some touch screen libraries offer better accuracy by specifying the resistance of the touch screen in the X direction. Resistance can be easily measured with a multimeter by connecting the test leads to the LCD_D1 - X + and LCD_DS X- terminals. Touch is sensitive to pressure.
- The SD card reader works well. Accessing the SD card with the functions available in the SD library included in the IDE version used does not present any problem. SD cards are recognized and can be written or deleted.
- At the time of purchase, there is no ducumentation available at AZ-Deleivery online store.
- The shield is well documented at: http://www.lcdwiki.com/2.4inch_Arduino_Display
Fortunately the shield is well identified in the antistatic plastic bag.
Driver: IL9341 Bus: 8 bit
Recommended librarires:
- mcufriend_kbv
- Adafruit_GFX
Or you can use the drivers provided by LCDwiki:
Libraries installationInstall mcufriend_kbv & Adafruit_GFX
MCUFRIEND_kbv
Adafruit_GFX
Graphic Test
Graphic Test 1
Graphic Test 2
CodingSimple use of the MCUFriend Library.
Displays a red screen during a second and after a blue one during one second.
/*
Blink TFT
Muestra una pantalla roja durante 1 segundo y despues una pantalla azul durante un segundo
Conexion paralelo 8-bit con display TFT con la libreria MCUFRIEND
This example code is in the public domain.
*/
// nucleo de la libreria grafica para displays de Adafruit
#include "Adafruit_GFX.h"
// Soporte de los controladores de display para shields Arduino MCUFRIEND
#include "MCUFRIEND_kbv.h"
#define BLUE 0x001F
#define RED 0xF800
// Pinout para ARDUINO UNO
#define CS 17 // LCD_CS A3 - Chip Select goes to Digital 17
#define RS 16 // LCD_CD A2 - Command/Data goes to Digital 16
#define WR 15 // LCD_WR A1 - LCD Write goes to Digital 15
#define RD 14 // LCD_RD A0 - LCD Read goes to Analog 18
#define RST 18 // LCD_RESET A4 - Can alternately just connect to Arduino's reset pin
// Creacion del tft display
MCUFRIEND_kbv tftDisplay(CS, RS, WR, RD, RST);
void setup() {
Serial.begin(9600);
Serial.println("TFT BLINK");
Serial.println("=========");
// Intento de lectura del ID del display
uint16_t ID = tftDisplay.readID();
Serial.print("Display ID: 0x");
Serial.println(ID, HEX);
// Inicio del display
tftDisplay.begin(ID);
Serial.print("Width: ");
Serial.println(tftDisplay.width(), DEC);
Serial.print("Height: ");
Serial.println(tftDisplay.height(), DEC);
}
void loop() {
delay(1000);
tftDisplay.fillScreen(RED);
delay(1000);
tftDisplay.fillScreen(BLUE);
}
Same program using LCDWIKI library
/*
Blink TFT
Muestra una pantalla roja durante 1 segundo y despues una pantalla azul durante un segundo
Conexion paralelo 8-bit con display TFT con la libreria LCDWIKI
This example code is in the public domain.
*/
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
#define BLUE 0x001F
#define RED 0xF800
LCDWIKI_KBV mylcd(ILI9341,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset
void setup()
{
mylcd.Init_LCD(); //initialize lcd
}
void loop()
{
//Sequential display blue, red
mylcd.Fill_Screen(BLUE);
delay(1000);
mylcd.Fill_Screen(RED);
delay(1000);
}
ApplicationMaking an Air Quality Monitor
Parts used:
- AZ-Delivery Arduino UNO R3
- AZ-Delivery 2.4 inch TFT LCD display
- AZ-Delivery MQ-135 Gas Sensor Air Quality Module for Arduino
Connections:
- MQ-135 module AO connected to A5 free pin
Features:
- Visualizing graphic data in real time
- Touch menu to select data.
- Data logger with SD
This datetime picker allows you to enter a specific date and time values. From setting an alarm to scheduling or to record your time series.
https://www.hackster.io/javagoza/arduino-date-and-time-picker-daa2fe
Arduino Touch Breakout GameFully configurable multi level Arduino breakout game for touch screen.
https://www.hackster.io/javagoza/arduino-touch-breakout-game-eda113
Comments