LCD Display weird repeated words (serial monitor is correct)

...

OK, here is your image:


Please do read the instructions, then go back and modify your post using the "More --> Modify" option to the bottom right of the post, as code, not a "quote".

If you do not mark it up as code, the code you post could well be garbled and is certainly anything but easy to read.

LiquidCrystal lcd(12, 11, 7, 6, 5, 4);

Which Arduino board are you using?

The SPI library uses pins 13 (sclk), 12 (miso), 11 (mosi) and 10 (cs) on Mega328 based boards (Uno, Nano, etc.). You cannot use those pins for the LCD, too. If you are tight on pins I suggest an I2C LCD and the hd44780 LCD library.

Here's more on the same topic.

Keep in mind that these particular pin numbers were chosen arbitrarily. You can use any Arduino I/O pin to connect to any LCD pin.

This poorly implemented comment ...

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);

... would be easier to understand if written like this ...

// initialize the library with the numbers of the interface pins
//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);      // put your pin numbers here

... or even better something like this ...

const int rs = 12, en = 11, d4 = 7, d5 = 6, d6 = 5, d7 = 4;
. . . 
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Don

Instead of using the LiquidCrystal library you should give Bill Perry's "HD44780" library (available via IDE built-in library manager) a try.
With that lib life is much easier, dealing with all kinds of "44780" chip-based LCD's (even with or w/o I2C backpacks). The library code automatically detects how you connected your LCD with your Arduino and then builds the LCD constructor for you.

Much less hassle with LCDs, especially if you are a beginner.

rpt007:
Instead of using the LiquidCrystal library you should give Bill Perry's "HD44780" library (available via IDE built-in library manager) a try.
With that lib life is much easier, dealing with all kinds of "44780" chip-based LCD's (even with or w/o I2C backpacks). The library code automatically detects how you connected your LCD with your Arduino and then builds the LCD constructor for you.

Actually, while the had44780 library has i/o classes for using an i2c backpacks as well as direct arduino pin control,
the hd44780_pinIO class used for arduino pin control initializes the same way as the LiquidCrystal class - you fill in the constructor with the Arduino pins that connect to the LCD.

The hd44780_I2Cexp i/o class can auto detect the pin mapping used on an I2C backpack.

If using a PCF8574 based backpack, it is simpler than using direct pin control,
but for controlling the LCD directly with Arduino pins, the initialization is the same as the LiquidCrystal library.

--- bill

Well, it has been over 24 72 hours; it is definitely looking like a dead thread. :roll_eyes: