i2c lcd showing unknown characters

it was working last week, i was trying out my RFID reader/writer with used a few header pin for hock up on my leonardo with reference to this page for pins used- Arduino Notes: Hooking up the RFID-RC522 to the Arduino Leonardo .
my backpack =http://www.ebay.com/itm/IIC-I2C-TWI-SP-Serial-Interface-Board-Module-Port-For-5V-Arduino-1602LCD-Display-/360822996583?pt=LH_DefaultDomain_2&hash=item5402b9fe67
my lcd=http://www.ebay.com/itm/1602-HD44780-Character-Display-Module-LCM-yellow-blacklight-16x2-LCD-for-Arduino-/221490534387?pt=LH_DefaultDomain_0&hash=item3391dd57f3
I know china lol im wondering if it is a just crappy hardware? heres my code i used

/* 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 ) */

Any help is good help

20140710_151230.jpg

Hi and welcome.

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.

you might try changing this..

while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());

==>

while (Serial.available() > 0) {
char c = Serial.read();
lcd.print(c);
}

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.

Me too. Same backpack, similar problems.

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

Thanks

Gavin

Hi gavin71, welcome too.

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.

gavin71:
Me too. Same backpack, similar problems.

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

Thanks

Gavin

Hi

Here it is:

http://www.geeetech.com/Documents/LiquidCrystal_I2Cv1-1.rar

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.

Thanks both.

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.

Gavin

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.