Uneven brightness of letters on LCD

I am using a RioRand LCD Module for Arduino 20 x 4, blue with white letters. I have the background brightness controlled with a 10K pot and adjusts fine. But when I have wording all across a row, the left side of the line of letters is darker then the right side. Any ideas why this might be happening?

Look at your module. The backlight LED(s) are normally on the right side.

LEDs normally take 20mA - 50mA. i.e. series resistor about 100R - 40R. A 10k pot is inappropriate.


From what I have seen it looks like a 10k pot is what is recommended. No?

Anything is written on Arduino forums. That does not mean that it is true.

Put your brain into gear. Use Ohm's Law for yourself. A series resistor is used for backlight LED (pins 15, 16) e.g. 0R, 40R, 100R.

How would you connect a potentiometer? It has 3 terminals.


Should I not be using the LCD Library then?

//lcd setup
LiquidCrystal lcd( 7,6,5,4,3,2); //initialize the liquid cystal library pins on 7,6,5,4,3,2

laughingcamera: From what I have seen it looks like a 10k pot is what is recommended. No?

No. A 10K pot is frequently recommended for setting the contrast (stand by for comment by Paul__B) via pin3.

The background brightness is provided by LEDs connected to pins 15 and 16. These require a series current limiting resistor, typically a whole lot smaller than 10K, and frequently already mounted on the pc board.


I did not know that, I will hook it up that way and give it a try. Thank you Don.

I tried what you said, used a 220ohm and it made no difference. I thought posting a photo will help, notice breakup of text on left side of LCD.

What happens when you simply send 80 characters to the display?

#include <LiquidCrystal.h>

//LiquidCrystal lcd(rs, en,d4,d5,d6,d7);
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);       // put your pin numbers here

void setup()
    lcd.begin(20, 4);                          // put your LCD parameters here
    for (char i=47; i<127; i++)                // send 80 consecutive displayable characters to the LCD
        delay(100);                            // this delay allows you to observe the addressing sequence

void loop()


See photo, same issue.

The HD44780U (or equivalent) controller contains all of the memory for the 80 characters but the chip only has the capability of dealing with displaying information at 16 locations on the display.

Your device has four more HD44100U (or equivalent) auxiliary controllers and each of these deals with the display of information at 16 additional locations on the display.

Since your problems are confined to a single block of 16 characters on the display I suspect that one of the controllers, or the pc traces associated with that controller, is defective.

You could try flexing the display and see if anything changes. You haven't got anything to lose.

EDIT: At least you have the contrast and backlight figured out.


Thanks Don.