Introduction: Arduino Bargraph Display

In Embedded system design, bar graph display is used for representing the signal strength, status indication, error indication in grouped or progressive indication of system parameters

Step 1: Parts and Components

  • Arduino Uno board
  • 330 Ohm resistor = 10 Nos
  • Bargrpah display
  • 1 K ohm potentiometer

Step 2: Schematic

  • The bargraph display is connected to the Arduino (2,3,4,5,6,7,8,9,10,11) digital IO pins through 330 ohm current limiting resistors.
  • The potentiometer is connected to the Arduino ADC (A0) pin for simulating the signal strength.
  • The potential read by the 10 bit ADC, (1024 steps ) is mapped to 0 to 10 scale and correspondingly activating the LED’s at the Bargraph display in increasing order.
  • Real life scenario, the signal strength is read by the ADC, accordingly bargraph is activated for visual representation.

Step 3: Software


LED bar graph

Turns on a series of LEDs based on the value of an analog sensor.

This is a simple way to make a bar graph display. Though this graph

uses 10 LEDs, you can use any number by changing the LED count

and the pins in the array.

This method can be used to control any series of digital outputs that

depends on an analog input.

The circuit:

* LEDs from pins 2 through 11 to ground

created 4 Sep 2010

by Tom Igoe

This example code is in the public domain.


// these constants won't change:

const int analogPin = A0; // the pin that the potentiometer is attached to

const int ledCount = 10; // the number of LEDs in the bar graph

int ledPins[] = {

2, 3, 4, 5, 6, 7, 8, 9, 10, 11

}; // an array of pin numbers to which LEDs are attached

void setup() {

// loop over the pin array and set them all to output:

for (int thisLed = 0; thisLed < ledCount; thisLed++) {

pinMode(ledPins[thisLed], OUTPUT);



void loop() {

// read the potentiometer:

int sensorReading = analogRead(analogPin);

// map the result to a range from 0 to the number of LEDs:

int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);

// loop over the LED array:

for (int thisLed = 0; thisLed < ledCount; thisLed++) {

// if the array element's index is less than ledLevel,

// turn the pin for this element on:

if (thisLed < ledLevel) {

digitalWrite(ledPins[thisLed], HIGH);


// turn off all pins higher than the ledLevel:

else {

digitalWrite(ledPins[thisLed], LOW);





DIY Hacks and How Tos (author)2016-07-01

These style bar graphs are really great for quick visual outputs. You can even use the remaining pins to setup multiplexing so that you can use multiple bar graphs at once.

About This Instructable




More by PugazhM:Arduino and ENC28J60 Ethernet Controller, (320x480) TFT LCD, DHT22 Temperature / Humidity Web ServerArduino and Infra-Red (IR) Obstacle Detection / Proximity Sensing / Line Counter, With 320x480 LCD InterfaceArduino and 3.5 Inch (320x480) TFT LCD (ILI9488) SPI Interface With DHT22 Temperature / Humidity Measurement
Add instructable to: