I know this is a very common and discussed topic around here: 16x1 LCD displays showing only the left half of the 16 characters. But, for me, the usual solution (lcd.begin(8, 2); and lcd.setCursor(0, 1) doesn't work at all.
Some data of my LCD display:
- Manufacturer: Xiamen Ocular
- Model: GDM1601A (datasheet)
- Characters: 16x1
- LCD Controller/Driver: ST7066U (datasheet)
First, I tried:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 1);
lcd.print("Hello, world!");
}
void loop() {
}
Result: only the first 8 characters are visible (Att1):
Came here, and saw the DDRAM addressing, and looking the datasheet of my display found Att2:
So I tried codes using "two lines":
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(8, 2); // IMPORTANT: I also tried lcd.begin(16, 2);, with the same unwanted result.
lcd.print("Hello, w");
lcd.setCursor(0, 1);
lcd.print("orld!");
}
void loop() {
}
Result: no characters at all were visible (Att3):
So, now I don't know what I'm doing wrong.
Thanks in advance for any help.