LCD show weird characters

Hello, I’m using a 16x2 LCD displays and an Arduino UNO WifiRev2, I upload a simple code:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2);
}

void loop() {

  lcd.setCursor(0,1);
  lcd.print("Hello, world!");


}

And it

show me the message but in a weird order, what it will be?

Help me please!!

Try adding a Delay(1000); at the end of the loop. You are sending data faster then the LCD controller can process it.

It get same or worst.

Wow, 3 whole minutes before you bumped your topic?

That mess of wires doesn't give much useful information. I have a hunch what might be wrong, but until I see some photos showing clearly what goes where, what's soldered and what's not, that's all it is, so I won't waste your time with it.

I’m sure that it’s well wired, I cheked it a lot of times, and I verified the soldered with a continuing multimeter, and it was all good!!

Please, I tried a lot of things to try to fix it, also it is a new one I buy another because I thinked that the other was damaged.

If you're so sure that it's well wired that you won't demonstrate that to someone you're asking for help, then good luck with your project.

Hard to tell from the photo, do you have a common ground connection between the Arduino and the LCD?

Sorry Your photo is not clear,without a schematic there is not much else I can do, good luck!

Take your time, draw breath, find a good tutorial or use the built-in examples.

It's probably something quite simple. Get into the habit of doing a bit of fault finding before asking for help.

Just doing a schematic and checking against what you have can reveal mistakes.

I always recommend beginners use the I2C interface to control an LCD display. There are much fewer pin and connection issues.
Buy an I2C backpack and solder it to the display (or, better yet, buy an LCD display with the I2C interface already mounted).

1 Like

Remove your two lines of code from loop() and put them in setup().

Don

1 Like

Thank you very much, it was a very simple thing.

delay() is not the correct solution, despite many forums saying connect R/W pin to GND it is used to read busy flag on d7 of lcd when the flag is 0 the you can write otherwise wait for it to become 0 like if HD44780 freezes for 10 seconds we will lose 10 chars in your code place 1 on R/W and check D7 that’s the busy flag

1 Like

Sorry for bad writing style