In this project we’re going to display the LED brightness on a LCD 16×2 with a progress bar. This is a good Arduino beginner project for getting started with the LCD display. We provide a list of the parts required, schematic diagram, and code.
The simplest and inexpensive way to display information is with an LCD (liquid crystal display). These are found in everyday electronics devices such as vending machines, calculators, parking meters, printers, and so on, and are ideal for displaying text or small icons. The figure below shows a 16×2 LCD front and the back view.

This LCD has 2 rows, and each row can display 16 characters. It also has LED backlight to adjust the contrast between the characters and the background.
When you buy a 16×2 LCD, usually it doesn’t come with breadboard friendly pins. So, you may need some headers.

For this project you’ll need the following parts:
You can use the preceding links or go directly to MakerAdvisor.com/tools to find all the parts for your projects at the best price!
Wire all the parts by following the next schematic diagram.
The next table shows a brief description of each pin of the LCD display. Make sure your LCD uses the same pinout.
Copy the following code and upload it to your Arduino board. The code is well commented so that you can easily understand how it works, and modify it to include in your own projects.
/* Created by Rui Santos All the resources for this project: https://randomnerdtutorials.com/ Based on some Arduino code examples */ // include the library code #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int potPin = A0; // Analog pin 0 for the LED brightness potentiometer int ledPin = 6; // LED Digital Pin with PWM int potValue = 0; // variable to store the value coming from the potentiometer int brightness = 0; // converts the potValue into a brightness int pBari = 0; // progress bar int i = 0; // foor loop //progress bar character for brightness byte pBar[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, }; void setup() { // setup our led as an OUTPUT pinMode(ledPin, OUTPUT); // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD lcd.print(" LED Brightness"); //Create the progress bar character lcd.createChar(0, pBar); } void loop() { // clears the LCD screen lcd.clear(); // Print a message to the LCD lcd.print(" LED Brightness"); //set the cursor to line number 2 lcd.setCursor(0,1); // read the value from the potentiometer potValue = analogRead(potPin); // turns the potValue into a brightness for the LED brightness=map(potValue, 0, 1024, 0, 255); //lights up the LED according to the bightness analogWrite(ledPin, brightness); // turns the brighness into a percentage for the bar pBari=map(brightness, 0, 255, 0, 17); //prints the progress bar for (i=0; i < pBari; i++) { lcd.setCursor(i, 1); lcd.write(byte(0)); } // delays 750 ms delay(750); }
After uploading the code to your Arduino board, you can rotate the potentiometer to adjust the LED brightness and change the progress bar on the LCD.

For a complete demonstration watch the video at the beginning of the post.
Copyright ©2025. All Rights Reserved Emblab THE RAVE INNOVATION