Arduino Displays: How to display text or Graphics with an Arduino. Should you use a simple LCD text display or a more complex graphical Display? Find the best ones to use and the trade off between display size and processing power.

Arduino Displays: If you want to get visible text output from your Arduino then you have many options including 7 segments LED drivers or graphics displays with touch sensitive action:

  • Simple LCDs.

  • LED based 7 segment displays.

  • LED dot matrix.

  • Small OLED Graphics displays.

If you're looking for a simple way to output text from an Arduino a good choice is an HD44780 LCD display, but you usually need about 8 pins which may be a bit too much for some designs. One option is to use an I2C based HD44780 meaning you only need 2 pins.

If you want to use a set of seven-segment displays it is quite possible to do the whole job using one chip and some transistors. However, it is far simpler to use a dedicated chip to do the job (MAX7219).

Memory & Processing

One important thing to keep in mind is that the size of the display affects the processor required to drive it. There are two aspects to this:

  1. Larger Arduino displays require more storage memory for the graphics.
  2. Updating a large Arduino Display requires more processing power.

It means for an Arduino Uno trying to update a TFT such as an ILI9431 - it is probably going to struggle with the amount of data output to the screen and will probably lag.

The larger display is going to need a faster and more memory fueled processor such as a DSP e.g. DSPIC32 or ESP32.

Even driving a small OLED Arduino display such as an SSD1306 with an Arduino Uno uses half the available SRAM memory (1kByte) for graphics. One library lets you do "text only" with this display - saving some memory.

HD44780 Text LCD: Arduino Display

HD44780 frontThis Arduino display shows 2 lines of text and 16 lines of characters but you can get displays with more lines and more characters. The same interface is used so there's no penalty in choosing a larger text display.

They do allow you to create your own characters so there is a limited option for some graphics e.g. you can create an analogue bar by using 8 definable characters (one pixel bigger to the right for each character).

They are popular as they are easy to program but the only drawback is that they need 7 interface signals, so you lose 7 pins just to drive the display. To get round this you can buy the same LCD with an attached I2C chip for a 2 wire interface.


There are two ways to use the MAX7219; You can either drive 8x 7 segment displays or one 8x8 LED matrix. In fact these are both driven the same way. For the 7 segment each 8 LED segment is selected (by enabling the ground path of the specific 7 segment).

The for the 8x8 matrix a single row is selected (by enabling the ground path of the row).

Each Segment or Row is enabled one after the other and the whole set of 8 segments (or rows) is updated faster than 20ms - your eye is tricked into thinking they are all updated at the same time.

You can use the MAX7219 to drive an 8x8 dot matrix display very easily.


If you are a fan of "Back to the Future" you'll have see those 7 segment displays in use (and lots of them!).  As well as being Retro they are useful to display information that is easy to read. You also see them commonly used in digital clocks and frequency counters.

You can drive them using a simple chip and a few transistors but it is far easier to use the MAX7219 to do the job. The main reason is that the chip takes responsibility for display update so the processor only as to feed information to the MAX7219 and it updates the display for you.

You can see the frequency counter project (link above) that updates the display using the processor and it must be updated at a rate faster than 50Hz. It means your processor could get overloaded if it has to do a more demanding task i.e. the display would freeze.

Using the MAX7219 as an Arduino display, means that can't happen and leaves the processor free to do other tasks.

SSD1306 OLED: Arduino Displays

SSD1306OLED displays or Organic LED displays are very bright and come in may different sizes. Most of them are single colour but you can get ones with a top area of different colour to the rest.

There are some more expensive ones that are full colour but the most popular single colour one is the SSD1306. It has 128 x 64 pixel resolution and the only drawback is that it is about an inch wide.

That does sound bad, but in fact you can get a lot of information on the screen and it is just about big enough to be useful in your microcontroller projects.

The other useful aspect is that it has an I2C or SPI interface (configurable) making it very simple to attach an Arduino display to your projects using just 2 wires!


Have your say about what you just read! Leave me a comment in the box below.

Don’t see the comments box? Log in to your Facebook account, give Facebook consent, then return to this page and refresh it.

Privacy Policy | Contact | About Me

Site Map | Terms of Use