Liquidcrystal problem?

Hi, my LCD has something to ask ...

There seems to be a line issue going on here. I am using this code:

/*
  LiquidCrystal Library - Serial Input
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the 
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch displays text sent over the serial port 
 (e.g. from the Serial Monitor) on an attached LCD.
 
 The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe 
modified 25 July 2009
 by David A. Mellis
 
 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(14, 15, 16, 17, 18, 19);

void setup(){
    // set up the LCD's number of rows and columns: 
  lcd.begin(4, 20);
  // initialize the serial communications:
  Serial.begin(9600);
}

void loop()
{
  // 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());
    }
  }
}

I have tried both lcd.begin(4, 20); and lcd.begin(20, 4); and they don't seem to make a difference.

With the LCD smartie Arduino code, the line spacing is fine however, so it's not a hardware issue ..

Anyone else have this problem?

Regards,
Dan

Dan:

I have tried both lcd.begin(4, 20); and lcd.begin(20, 4); and they don't seem to make a difference.

That's because this function is not completely implemented. Currently it just checks the second argument and if that is >1 it sets up the controller for a two line configuration.

so it's not a hardware issue ..

Actually it is a hardware issue. That's the way the LCD controller is configured to operate. 'LCD smartie' must be compensating in software.

For a complete description of this phenomena follow the LCD Addressing link at http://web.alfredstate.edu/weimandn.

Anyone else have this problem?

Yes, everyone. You have to understand that these devices were not designed to operate in the manner of a computer terminal. Their purpose was for short messages to tell you such things as your printer needing more paper or your toast being done.

Don

There is a fixed library:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264823411/60

It is due to how the HD44780 controllers are set up, the first does line 1&3 and the second does line 2&4 as far as I know. Don't know why it is like that, it just is...

Mowcius

Don't know why it is like that, it just is...

You could look at the link in the previous post and find out!

Don

You could look at the link in the previous post and find out!

Haha, yeah sorry didn't really read that bit :slight_smile:

That's quite a good read. Insightful... :wink:

Mowcius

Yeah, it was indeed helpful.

Ok, tried that updated LQ lib and it seems to work OK so far, just a few little bugs but thats OK :slight_smile: