Here's my code:
#include <LiquidCrystal.h>
int rs = 11;
int rw = 10;
int en = 9;
int d0 = 1;
int d1 = 2;
int d2 = 3;
int d3 = 4;
int d4 = 5;
int d5 = 6;
int d6 = 7;
int d7 = 8;
LiquidCrystal lcd(rs, rw, en, d0, d1, d2, d3, d4, d5, d6, d7);
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2);
Serial.begin(4800);
lcd.setCursor(0,0);
lcd.print("Loading...");
delay(3000);
lcd.setCursor(1,1);
lcd.print("waht");
}
void loop() {
}
And here's the output: enter image description here
Also note the first line of text starts in the second column. I've tried with a different LCD and the same issue occurs. It seems to go one character further in ascii (ex: the '.'s become '/') if that's any clue to what's going on. In a separate program (exact same setup) I can print "Hello World" on the first line no problem. Anyone know why it's doing this and how to fix it? Thanks
-
3Looks like it gets one or two least significant bits wrong. So check wiring and soKIIV– KIIV2021年06月04日 06:58:46 +00:00Commented Jun 4, 2021 at 6:58
-
2Btw, Arduino pins 0 and 1 are wired to USB serial (on many boards) - so you can try it without Serial.begin and if it works, just move pin(s) to not use arduino pin 1KIIV– KIIV2021年06月04日 07:52:02 +00:00Commented Jun 4, 2021 at 7:52
1 Answer 1
Your Least Significant Bit is always 1 (Check the ASCII table to see this). You might have a problem with your wiring, double check the pin you use and that the continuity is good.
Also, as KIIV said in comment, depending on the board you use, you might have a conflict with the serial port (Which pull the line high when not transmitting, explaining the result you get). Try moving pin 1 to another one.