2004 LCD I2C Issues

Hello,

I am using a 2004Char LCD with I2C backpack

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//Addr: 0x3F, 20 chars & 4 lines
//0x27 worked for other poster
LiquidCrystal_I2C lcd(0x3F); 

void setup()
{
    lcd.begin(20,4);               // initialize the lcd 
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("Hello");
}
void loop()
{

}

I get a blank screen with flashing cursor and 2 grey rows

I'm using a mega and have it directly wired to sda and scl no pullup resistors

Have you removed the stock LCD library "LiquidCrystal" from the library directory? It looks as if it can't find the include files for the library.

Once you have this compiled, you will have to adapt the I2C module's pin out if you are not using the default configuration to get the LCD going.

All this is assuming you are using the "New LiquidCrystal" library.

What I2C backpack and module are you using? and library?

I got the LiquidCrystal_V1.2.1
The backpack says its a sainsmart
The only identify marks on the back of the screen is J204A and to the right of it 1250

(My Original posting was that it wouldn't compile)
I got it compiling and now I'm just getting a blank screen using the code above.
I also used the I2C scanner to get the right address.
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
I downloaded and installed this display library and deleted old one.

Need a photo of that backpack - and presumably the LCD as well.

You mean SDA & SCL ===>A4 & A5 right?
Why no pullup resistors ?
I've never heard of that working. Doesn't Internal pullup only work for digital lines?

Hoi,

try this code, too:

/* YourDuino.com Example Software Sketch
 20 character 4 line I2C Display
 Backpack Interface labelled "LCM1602 IIC  A0 A1 A2"
 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 )-----*/
//none
/*-----( 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(0x3F, 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(20,4);         // initialize the lcd for 20 chars 4 lines and 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(3,0); //Start at character 4 on line 0
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(2,1);
  lcd.print("From YourDuino");
  delay(1000);  
  lcd.setCursor(0,2);
  lcd.print("20 by 4 Line Display");
  lcd.setCursor(0,3);
  delay(2000);   
  lcd.print("http://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.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Start Serial Monitor");
  lcd.setCursor(0,1);
  lcd.print("Type chars 2 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 ) */

Just to cover all the bases, we need to ask you a routine question.
Do you know how to correct install libraries and which did you install the LiquidCrystal_I2C lib ?

The library you installed is not I2C lib, it's for 4-bit LCD, and it is compiling because it is a good library for
that kind of lcd.

The library you need is the attached file from here:
http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/

LiquidCrystal_I2C.zip (1.19 MB)

on second thought , that one is for the expander. I think the one you need is this one
from here:

Arduino-LiquidCrystal-I2C-library-master.zip (8.96 KB)

raschemmel:
You mean SDA & SCL ===>A4 & A5 right?
Why no pullup resistors ?
I've never heard of that working. Doesn't Internal pullup only work for digital lines?

A4 and A5 are digital lines.

I have so far (which isn't saying much) not needed to use additional pull-ups beyond the internal ones that the libraries enable. Unless you have more than one I2C device and more than a couple of decimetres (a few inches) of bus, they are most unlikely to be needed. The actual problem almost always proves to be something else (and probably so even if the pull-ups do "fix" it!).

Well you were right the last time when I told that guy to connect his power to where the jumper was
so you're probably right this time too.




fm, I removed the stock library and installed the one that I linked too. (Really have no idea if its the latest)
Paul I attached photos of the LCD and Backpack.
Raschmmel, I wasn't sure if I needed pullup resistors, only pin 13 has internal pullup (I think) On the Mega it has ports listed as SDA and SCL (20&21 under communication)
A.R.Ty The Code doesn't work for me. (Thanks for trying tho).
Raschmmel, i correctly added the library. (delete old, add library through menu) Under liquidcrystal is LiquidCrystal_I2C the above posted link shows the new library that I installed.
Raschmmel, If i had not installed the correct library (I2C) The above code would not compile because the include is I2C
Paul, For the Arduino Uno, connect SDA to A4 and SCL to A5, A indicating analog

You guys all rock thanks for helping!

JAnwyl,
Can't see any photos. What's the SITREP ? (Milspeak for SITUATION REPORT)

Can"t see any photos? Also sit rep is I have a backlight and that is it.

If anyone can't see photos I think this is the lcd I have
http://www.sainsmart.com/sainsmart-iic-i2c-twi-serial-2004-20x4-yellow-lcd-module-shield-for-arduino-uno-mega-r3.html
Mine is 2004, I2C, from Sainsmart

Did you click on the photos and look at the back of it to compare it to yours ?
If this is what you have then you're probably in good shape because it will be easy to
get it working.

Look at the code at the bottom of the page here:
http://www.ebay.com/itm/SainSmart-IIC-I2C-TWI-Serial-20x4-LCD-Sensor-Shield-V4-For-Arduino-UNO-MEGA-R3-/280873982601

Here's the file from the download link in the last post.
There's a photo of the back side of the lcd on that page that shows the connections.

LiquidCrystal_I2C.rar (99.7 KB)

I also used the I2C scanner to get the right address.

You didn't tell us the address you got .
Was it 0x3F ?