Introduction: Arduino Nano LED Display

This is my first instructable on how to cleanly interface a 0.56" 4-digit 7-Segment LED display to an Arduino Nano. 7-segment LED displays are ideal for displaying information on an Arduino due to their low cost (~$1.50 on Amazon). They can be used for displaying alphanumeric data:

  • Time ( for a Clock
  • Voltage/Current (xx.yy) for a Voltmeter/Ammeter
  • Temperature (xx.y) for a Thermometer
  • Distance/Speed (nnnn) for a Odometer/Speedometer
  • ASCII Text for a Scrolling Banner

The applications are only limited by your imagination (and coding skills) ;-)

While the pin spacing matches up perfectly (0.6" wide) you can't directly wire the display to the ATMega328 pins because the current would be too high and burn out the LEDs :-( There needs to be a series resistor in between the 5.0 volt output pin display.

Typical 7-segment displays wants 20mA - 30mA so I am using 220 ohm resistors on the 4 digit pins (rather than the 8 segment pins).

Step 1: Bill of Materials

Picture of Bill of Materials
  1. Arduino Nano: ~$3.20 ea in Qty 5 from Amazon
  2. 0.56" 7-segment 4-digit LED display: ~$1.50 ea in Qty 5 from Amazon
  3. 4 220 ohm surface mount 0603 resistors: ~$0.10 ea

Step 2: Tools Needed

  1. X-Acto knife
  2. Soldering Iron
  3. Solder

Step 3: Modify Arduino Nano PCB

Picture of Modify Arduino Nano PCB
  1. Cut 4 traces (marked with Red arrow above) near D4, D7, D8 and A0 using X-Acto knife
  2. Scrape off solder mask (shown in Sliver above)
  3. Tin the trace with solder to prepare for next step.

Step 4: Solder LED Display & Resistors

Picture of Solder LED Display & Resistors
  1. Place LED display pins from backside of PCB aligning the pins 1-A5, 6-A0 & 12-D4, 7-D9
  2. Solder the 12 LED display pins to the Arduino Nano
  3. Place 4 SMD resistors between the Pad and the tinned trace from Step 3.

Step 5: Download Code & Test

Picture of Download Code & Test
  1. Download and install the latest Arduino IDE (1.6.8 is the current version)
  2. Note if using a Chinese knock-off Nano with a CH340G (like the one on Amazon) you will need to install CH341G drivers from here
  3. Plug in a cable from the computer USB Type A port to the Mini USB on the Arduino Nano
  4. Download my library from Git hub using a GIT client to your local Arduino library folder (typically c:\Users\username\My Documents\arduino\libraries
  5. Open the Arduino IDE
  6. Select File/Examples/LED7Seg/LEDDemo.ino
  7. Select the board using Tools/Board/Arduino Nano
  8. Click the Download button (Right arrow on the toolbar)
  9. Display should show the following 4 items:
    • 0-9.9 Shows graphic segment test (A-F,DP) digit-by-digit
    • 10-29.9 Shows scrolling text message
    • 30-49.9 Shows counter as signed X.YY number
    • 50-69.9 Shows counter as unsigned hexadecimal number
    • 70-99.9 Shows time in as XX.Y second


nitrogyte (author)2016-06-08

can i use an arduino uno r3?

Len61 (author)nitrogyte2016-06-08

sure but you have to wire the pins to match the Nano (or change the pin definitions in LEDDemo.ino). Also be sure to check the LED Display type (e.g. common cathode or common anode, pinout, etc).

GregS58 (author)2016-05-26

Hi I have built this project but have one problem. The program seams to run as it does on the video but I can hardly see the change of digits because all the lights are on but just less brighter... I did not have 220 ohms resistors so I used 200 ohms... could that be the problem? Thanks in advance

Len61 (author)GregS582016-05-26

No 200 ohms should be brighter than 220 ohms. Did you use the exact same display as I did? Some LED displays are brighter for a given current than others.

GregS58 made it! (author)Len612016-05-27

yes I beleive it is exactly the same. I've added a picture to show you. In the photo you can't see a difference in the lighting but when I run the program you can see it working but only very slightly

Len61 (author)GregS582016-05-27

I'd recheck the resistance value using an ohm meter if possible. Maybe you used 2.0K instead of 200 ohms?

GregS58 (author)Len612016-05-27

Checked!! it is 200 ohms. when I changed some of the program it managed to get the leds to change but all I get is giberish...

Len61 (author)GregS582016-05-27

Its hard for me to tell from the photo how all the pins are connected. Have you tried mounting (another) LED display on the back of the Arduino with SMT resistors as I did in my instructable? Out of ideas to check at this point...

GregS58 (author)Len612016-05-27

I followed the connections you made and checked them. All I can think of is that the internal wirering of my display is different so I would need a different programing unfortunatly I don't think I will be able to re-use your program as I am still learning Arduino. but thankyou very much for your input and help.

Len61 (author)GregS582016-05-27

Look at the LED Diagram in Step #4 and compare them to your display (e.g. test each segment with a 220 ohm resistor between 5V and GND) - note my display is COMMON CATHODE so Digit 1-4 should be connected to GND and the Segment A-F pin should be connected to 5V. Then look at the Pin #s in LEDDemo.ino to match your display and mode (COMMON_CATHODE or COMMON_ANNODE).

GregS58 (author)Len612016-05-27

I know this might sound stupid but could this happen if I cabled the display the wrong way around? sorry for all the questions. I am learning and this project is the most complicated I have done for now... Thanks Len61

db9pz (author)2016-05-26

That's really, really (!), clever. Very well done!
Markus , db9pz

nqtronix (author)2016-05-21

Among all those LED Segment Display Intructables this one stands out through its unique and absolutly elegant usage of space. It's a brillinat idea to use the breaout pins of an arduino as a pcb to mount other components directly on, well done!

wold630 (author)2016-05-20

Cool! Thanks for sharing!

About This Instructable



More by Len61:Arduino Nano LED Display
Add instructable to: