/* YourDuino.com Example Software Sketch
16 character 2 line I2C Display
Backpack Interface labelled "YwRobot Arduino LCM1602 IIC V1"
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <Wire.h> // Comes with Arduino IDE
// Get the LCD I2C Library here:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>
/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
/*-----( Declare Variables )-----*/
//NONE
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600); // Used to type in characters
lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
// ------- Quick 3 blinks of backlight -------------
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight(); // finish with backlight on
//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0
lcd.setCursor(0,0); //Start at character 4 on line 0
lcd.print("Hello, world!");
delay(1000);
lcd.setCursor(0,1);
lcd.print("HI!YourDuino.com");
delay(8000);
// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
lcd.clear();
lcd.setCursor(0,0); //Start at character 0 on line 0
lcd.print("Use Serial Mon");
lcd.setCursor(0,1);
lcd.print("Type to display");
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
}/* --(end main loop )-- */
/* ( THE END ) */
Your question is unclear to me, but i'll make some remarks / tips.
Do you see the hello world message for some 8 seconds after starting the sketch ?
You are writing values to the LCD, that is not the same as printing characters to it.
Do you fully understand that difference ?
The answers to these questions might help decide what way to go next, to solve your problem.
H
I got similar issue, with same hardware, your I2C is a v3, same as mine, sound come from same location, china, as lcd 12x2 too, but only if i use last liquidcrystal libs. So i used the link that my seller put on his ebay store. I can put the link here if you want testing it.
I am updating the display with a temperature reading every two seconds. It works fine to start with, and then after a couple of minutes it starts to get it wrong - dropping a character or two - it then starts to show random characters and cursors.
It would be great help if you could post a link arssant
You might want to check how often you are writing to that LCD.
I really don't think it is the same problem the original poster (OP) has.
Try to make your sketch to only update what needs to be updated, and only do that when something has changed.
There is no need to write the same content to your screen over and over again, and doing that might get you in some timing troubles.
That is, if you do that of course.
As you didn't provide any clue to your sketch, i'm guessing here.
I am updating the display with a temperature reading every two seconds. It works fine to start with, and then after a couple of minutes it starts to get it wrong - dropping a character or two - it then starts to show random characters and cursors.
It would be great help if you could post a link arssant
Decompress it and place all files inside libraries/liquidcrystal.
Keep a copy of your liquidcrystal dir, as MAS3 say, don't think is the same issue as the original post.
A quick update - I have soldered up an identical 1602 display with a identical i2c backpack (I bought 2 of each) and all is working fine. So I must have either damaged one of the components, or one of them must have been faulty. It has been running now for several hours, updating at a rate of more than once a second, without any problems, so I don't think the update speed was the issue.
If you did the soldering on both, check and double check your own work first.
Creating a bad connection while soldering is easier than creating a great connection.
I went back to check my soldering job it was great, liquid flux is your friend if used right. But my tool that applied my flux was the one to fix the problem. The lcd has metal twist on the back side, holding the frame in place. My backpack was sitting on one of the metal twists. i jammed a Q-tip between the backpack and lcd and it works great.