New User here.. Have an LCD that I can't get working correctly

Hello, I have a Seetron BPI-216 LCD Module that works fine when used with my Basic Stamp, but I'm afraid I can't get anything but a bunch of triangles when using my new Arduino Duemilanove. The display turns on, and initializes, but I am unable to get anything usable to print to screen.

PDF Here: http://www.seetron.com/docs/bpi216mnl.pdf

So here's what I have, if anyone can point my away from my ignorance it would be appreciated.

void setup()
{
  delay(1000); //Delay for LCD serial board to init
  Serial.begin(9600);
  pinMode(1, OUTPUT);
  
  Serial.print(254, BYTE); //Instruction byte
  delay(100); //overly long delay required for 9600bps
  Serial.print(1, BYTE); //clear screen
  delay(1000);
}

void loop()

{
  
 Serial.print("Hello World");
 delay(1000);
}

Yes, I have the dip switch set for 9600bps as well, and my model doesn't have a backlight (the other dip switch)

Thanks, Aaron

From the look of your code, it's because it's also connected to the main UART (serial port), which the USB connection uses. Both try to use the port and neither gets clean data. Happily, you can just set up a whole fresh serial port for your LCD to live happily on it's own with.

What you'll want to do is use SoftSerial, which will allow you define a serial port on any pins you want. The USB connection is basically causing confusion; just set a fresh serial port up for your LCD to use, and there will be no conflict.

http://arduino.cc/en/Reference/SoftwareSerial

Enjoy!

OK, thanks for that info, but I am still getting the same effect, a bunch of triangles that correspond to the ASCII Table 0,0 symbol. There is some garbage running across very fast as the Arduino is sending data. So it is sending.

I’m assuming that the Arduino is using standard serial settings (N 8 1)? I also need no handshaking. Doesn’t seem like that would be it, however.

So here is the new program, that produced the same results, I have tried changing the output pin as well with no change.

#include <SoftwareSerial.h>

SoftwareSerial mySerial = SoftwareSerial(2, 3); //Set RX/TX pins

void setup(){
delay(1000);
pinMode(3, OUTPUT);
delay(1000); //Delay for LCD serial board to init
mySerial.begin(9600);
  
  mySerial.print(254, BYTE); //Instruction byte
  mySerial.print(1, BYTE); //clear screen
  delay(1000);
  mySerial.print(254, BYTE);
  mySerial.print(2, BYTE); //Set cursor to home postion
  delay(30);
}

void loop()

{

mySerial.print("Hello World!");
delay(1000);

}

8N1 is correct.. have you tried 2400 bps?

Hello, I’m using a serial LCD from Parallax.
The code below works.

#include <SoftwareSerial.h>
SoftwareSerial mySerial = SoftwareSerial(2, 6); //Set RX/TX pins

void setup(){
  pinMode(6, OUTPUT);
  delay(1000);
  mySerial.begin(9600);
  delay(200);
  mySerial.print(12,BYTE);:// clear the screen
  mySerial.print("Hello World!12345678901234567890");
}

void loop(){
}