Arduino + Serial LCD problem (with pictures)

Hi !

I have an Arduino Duemilanove with a Prototype Shield, and an LCD with a Serial connection.

the LCD I have is this one: Serial LCD Kit LCD #117
it is interfaced with this: LCD117 Serial LCD Kit
I tried to follow this example: Serial LCD tutorial

now, it seems I did't plug everything correctly, because when I power the Arduino, the LCD doesn't turn on.

Here is how I plugged everything:

on the LCD interface:

on the Arduino:

I uploaded a sketch with only Serial.open(9600) in setup and println("Hello world") in loop.

the LCD doesn't turn on or do anything.
what's wrong?

thanks :slight_smile:

ok, I moved the Val thing to digital pin 13 and it displays "hello world" many times, for a millisecond.
I think I'll try to get further from here. If you still want to help, you're welcome :wink:

On EN (clock), the LED will flash in a stuttering manner

that's what it does now.
any help?

ok... actually it works, but the light is so weak that I can barely see anything... it says that I have to send "?BFF" to the serial, I don't know how but I'm going to figure it out...

have you put at small potentiometer in there to adjust the contrast ?

If your display requires it and it's not there you will have very faint or very dark text.

Check the datsheet to see if it is required.

no I didn't, I don't have any potentiometer right now (I've ordered some though) on the back there's a CONTRAST screw, but turning it either way doesn't do anything :frowning:

I begin to wonder if it's not a power issue, because the first times I tried, when the Arduino worked, or when I pushed the Serial button on the arduino software, the screen light was perfect for a millisecond

While it doesn't address the brightness, etc, issues, for people reading this thread in the future who haven't got as far as seeing ANY text, there is an alternative tutorial on setting up a serial LCD at....

It is written for beginners. People with experience will probably find the more concise Arduino Playground - SerialLCD cited above more satisfactory for their needs.

it says that I have to send "?BFF" to the serial

... just put ?BEF in front of the Hello World of the program you are using to get Hello World to appear. This is crude, but should work. (Eventually, you'll move the "send ?BEF" stuff to a line of your "setup" function.

===
Let's "name parts" a bit...

You have an LCD panel which came with the 117 LCD Controller.

The controller is capable of driving a wide selection of panels.

On the controller, there IS (or should be!) a variable resistor/ potentiometer. I'm pretty sure that you were talking about this when you spoke of the "contrast screw". If you have exactly the part that was supplied with my kit, it "stands up" on the board, and I turn a little orange "thing" with my (phillips) screwdriver held parallel with the board. In the illustration at...

http://www.phanderson.com/lcd106/lcd107.html

... it is a blue square, white cirdle in center. It is at the end of the board away from the reset button.

Now... THAT variable resistor is to adjust the contrast of the characters on the LCD panel.... set it wrong and you have very pale characters on a clear background, or very dark characters on a quite dark background. The characters should be "black" and the background "clear". (Or maybe vice-versa, depending on things... but one clear and the other dark.) When MikMo spoke of putting a potentiometer in, he probably didn't realize that there was one built into the controller, and you didn't realize that's what it was? (P.S.: Further study of Peter Anderson's page about the 117 suggests that he is now supplying the kit with two resistors to fit in place of the potentiometer. If you are seeing "Hello World", and you have clear and dark, then all is probably well. If you want the thing to be easier to read, especially when the light in the room around you is low, read on....)

Continuing "naming of parts": All LCD displays have the "thing" that can show characters. We're pretty well done with that, it is mostly working if you can see "Hello World".

But! In some LCD panels there's another "thing" that can "turn on" (or not!) With some panels, the light falling on the device is all the light there is. However, some LCD displays, quite separately from the "thing" that makes the characters, have a light BEHIND the "thing". Known as the "backlight" (or by other names.) It sounds like you have one. I'm not sure how you turn yours on, nor if how bright it is can be varied... will depend in part on which panel you have. But I suspect that your problems are in this area.

Also from the Anderson page....

The processor provides for variable backlight intensity... The maximum backlight intensity is controlled with a series limiting resistor.

A source of +5 VDC with a minimum current of 10 mA is required for this design. This excludes backlight current. If the interfacing LCD's LED backlight feature is used, the back light current must be limited to less than 250 mA.

That would lead me to believe that the 117 (the controller), especially if you are using it with a panel supplied WITH the 117, can take care of turning on the backlight, and, if the right sort of panel is in use, controlling the brightness of the backlight. (Some backlights may offer only one "on" level.)

Let us know how you get on!

(Wrote all of this in hopes of breaking the problem up into its different parts, where difficulties can arise, in case it helps future readers of the thread.)

I really appreciate the effort you put in your post !!! thanks for that, long answers are really rare

you are right, what I meant by "CONTRAST screw" was this square blue box. I have the same one that is in the illustration you pointed.

The model I ordered is the yellow text on black background.

I shot some pictures for you to see where I'm at, presently:

this is what it looks like: it's on, the text is here, but if you don't look close you don't see anything

here it is when you look really close, the iPhone saturated everything to compensate the lack of brightness:

this is the code I used to do this:

void setup() {
Serial.begin(9600);
Serial.println("?f?c0"); // Clear screen, No Cursor
}
void loop() {
Serial.println("?f?7?5 hi tkbyd !! ?5?7");
delay(5000);
}

you see I get the ?code thing, the thing is, if I put ?BEF for example, it acts as if it was printing a character, I'm not sure it understands what I'm asking it to do.

and when I turn the circle in the blue square, nothing happens.
do you thing there's something wrong with the resistor or something? :frowning:

Now after thinking about it for a while, I'm wondering... can it be that the LED which is supposed to handle the backlight is dead?
that's the more probable explanation to me right now and I have no idea how this could be fixed, if it can be fixed :confused:
but is it really the LCD's fault, or the Arduino which doesn't provide enough power to the LCD?

It looks to me like the backlight isn't working

Most LCD panels need a resistor to limit current to the backlight LED, does the serial adapter incorperate a resistor for the backlight ?. If not the unrestricted current through the LED will have cooked it. The Arduino will have little difficulty in supplying enough current for the backlight if properly 'resisted'. The backlight on mine runs to about 18mA (about 95% of what the panel as a whole consimes).

Just to clarify, the contrast screw has nothing to do with the backlight. You neet a contrast adjuster on LCDs that don't have backlights.

If the backlight is cooked, its difficult to do much about since its buried in the panel. If the serial board is a push fit onto the LCD, its a simple matter to put a new panel (cheap) on the serial board (expensive). If its soldered it means desoldering the old one and soldering a new one in its place. Not too difficult if you have the 'tackle'.

I have the same LCD and serial backpack.
Try the following code and see if it works. If so, just use the same setup section and change what you want to display in the loop section.

Hope this helps.

Dan

http://www.thewrightproject.com/arduino/SERIAL_LCDdemo4x20.pde

I am not using that kit, but I have to power the backlight separate from the LCD, I wonder if A1 and K1 in your first photo need power (probably +5V and gnd). Do you have a schematic of the lcd?

In your first photo.

The red wire labeled 2 is +5 VDC for the processor and the LCD. The other red labeled 4 is +5 for the backlight. Black is GRD and Yellow is your digital input.

Note that #4 must be connected to +5 VDC or you will have no backlight.

These LCDs have an onboard series limiting resistor on the LCD panel. You can see that I used a zero Ohm resistor on the daughter board.

As noted, set the backlight to something like ?Bf0. With this specific LCD, some backlight is required to see anything.

Please let me know at pha(at)phanderson.com

Peter Anderson

The issues of operating the backlight are now discussed at...

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264343028

The series limiting resistor mentioned in my earlier post is incorporated in the board from ModernDevice.com, which is what is shown in this tread's pictures. Also on that board, visible in the first picture, is the TIP120 for controlling an external voltage to the LCD panel's backlight with the low power output from the PIC at the heard of the ModernDevice module. You just sent "?B00" or "?BFF" or in between, and the PIC+transistor does the rest.

sorry for answering so late, thanks for your answers

pluggy, I think the following posts have answered your question? I'm not sure though. Photo-Worx, I'll try it as soon as I get home, but I don't think the code is the problem. nosebreaker, the schematic of the LCD can be found in the links on my first post I guess

pha555, I didn't expect you to answer directly :slight_smile:

I'm at work, so I can't try anything right now

...so if I get it right, I'll have to connect wire #4 to a 5V instead of GND...

I'm a real novice so I'm certainly going to say something stupid, but, on my shield there's only one 5V "plug"? how can I solve this? would a breadboard help?

tkbyd, awesome post, I'll try and use it when I can.
BTW, I plan on making a complete tutorial once I get everything done, so others can learn from my mistakes. :wink:

SUCCESS

on a breadboard, I put a wire so that the arduino now sends 5V to both red wires (5V and Val)

the backlight works !! :slight_smile:

pha555's post was decisive, thank you
and sorry again for the novice question

I feel like I'm goiing to come back soon, but thanks everyone.

Hi all,
New to the forums and the Arduino world. I'm a senior EE and was recommended to pick up the Arduino Duemilnove for my senior project, an Aromatherapy Center using fans. My question is not based around PWM like you'd like, but rather I purchased an LCD117 kit and a 16x2 LCD screen from moderndevice.com. Just finished putting it all together today but I cannot communicate to the LCD. I've tried putting the signal wire to the Tx pin, a different pin, both analog and digital, but no matter what command I send through the Serial Monitor or through coding in the Arduino, the screen sits with it's blinking cursor like a laughing little boy saying "You ain't got no ice cream!". Is there a cookbook method I can follow somewhere that is flawless for this setup? I've tried the PHanderson setup with complete failure and I've googled everything regarding LCD117 Duemilanove setup with everything redirecting me to the PHanderson setup. I'm getting really frustrated because I was told it was easy to do this, and I'm now realizing that this person is a freakin' genius and doesn't leave a laboratory to eat.
I'm on a bit of a time crunch since this needs to be done this semester by May 15th so I can move on with life. Any help would be greatly appreciated. Thanks!