can never get a LCD to work with UNO

off an on so as i have other hobbies i pursue so i dont need to examine my thought process mr smart ass .
if you dont have any usefull input.

the problem maybe out of date progs as when i compare them they are slightly different

Moderator edit for language.
Do not repeat.
Sp. "useful"

knuckles:
i checked the connections over and over and theyre identical to that shown in the arduino cookbook .
lcd chip is the HD44780 standard controller .
its all a bog standard setup ,with 4 pins data transfer

We have seen all of this before.

I will try once more.

Post your code. We are not interested in what code you think you copied or where you copied it from. We want to see exactly what you used.

Post a photo that clearly and unambiguously shows both ends of all of the connections between your Arduino and your LCD module.

Don

I just dug out the code I used when I tested my LCD a while ago. It's based on Mike Bramwell's code- I can't remember where that came from. It has this line, which I don't pretend to understand. I just used it as is and it worked...

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

I assume the order of those pin numbers is important. I see from your post, @knuckles, that you mention pins 4, 5, 6, 7, 8, 9 and wonder if you've got them coded in the order 4, 5, 6, 7, 8, 9 whereas it should maybe be 8, 9, 4, 5, 6, 7?

(But if you posted the code as suggested, we would know.....)

It has this line, which I don't pretend to understand. I just used it as is and it worked...

Well this is fully explained but very carefully hidden on the Arduino site.

Start here: http://arduino.cc/en/Tutorial/LiquidCrystal
Scroll down to the bottom
Use the Liquid Crystal Library link to get here: LiquidCrystal - Arduino Reference
Use the LiquidCrystal() link to get here: LiquidCrystal - Arduino Reference
And there it is under 'Syntax'

Wouldn't it be easier if they completely documented the examples?

//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      // put your pin numbers here

Don

floresta:

It has this line, which I don't pretend to understand. I just used it as is and it worked...

Well this is fully explained but very carefully hidden on the Arduino site.

Don

...on display in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign outside the door saying "Beware of the Leopard." [/quote]

also, try this:

LiquidCrystal PLCD0(RS,255,EN,D4,D5,D6,D7);

I also haven't been able to get a 6-parameter sketch to work, but a 7-parameter does.

I also haven't been able to get a 6-parameter sketch to work, but a 7-parameter does.

Don

Just try the line

LiquidCrystal lcd(8,9,4,5,6,7);

Don't be tempted to re-write the number in order.

Just try the line

LiquidCrystal lcd(8,9,4,5,6,7);

Don't be tempted to re-write the number in order.

This is horrible advice.

Your recommendation points out the fact that you really don't understand it's purpose. Why don't you follow the links in reply #9 to find out?

Don

floresta:

Just try the line

LiquidCrystal lcd(8,9,4,5,6,7);

Don't be tempted to re-write the number in order.

This is horrible advice.

Your recommendation points out the fact that you really don't understand it's purpose. Why don't you follow the links in reply #9 to find out?

No it isn't, I understand the purpose well, and it is very good advice.

I say this because:

  1. While I have not read reply #9, I have read the original post, which I recommend to you, and the problem is very much like the problem I had, right down to the source of code that could be problematical.

  2. The advice I gave actually works. Well, it did for me, indeed it is all I needed to do.

The advice was well-intended and simple enough to try, hopefully Knuckles will get the same result and, in that blessed event, we will all be glad to hear from you.

Oh, and guess what? I have also read the good news from Johannesburg in reply #8, which I also recommend. You might find it as entertaining as I do, although I guess you will not find it a pearl of wisdom.

...although I guess you will not find it a pearl of wisdom.

Well at least you got that part right.

Don

NickPyner:

  1. While I have not read reply #9, I have read the original post, which I recommend to you, and the problem is very much like the problem I had, right down to the source of code that could be problematical.

The problem really isn't the code, it is that the constructor that configures the pins used by the
LiquidCrystal library does not match how the lcd is wired up.
So in reality it is that the LCD is mis-wired. i.e. the LCD is not wired up the way the sketch told the library it was wired.
All the matters is that they match. You can wire the lcd up according the constructor or alter
the constructor in the sketch to match the wiring.

It is only 6 wires/pins. With careful attention to details it isn't that difficult to make sure the
constructor properly defines the pins for how the LCD is wired.

And as Don said, part of what makes this difficult is that the LiquidCrystal examples don't clearly show what
lcd pin/function each of the pins in the constructor is used for.

Once there is an understanding of the constructor arguments and which argument (pin) represents
each LCD function it becomes a simple matter of looking at which Arduino pin is assigned to each
LCD function and then wiring that Arduino pin up to the LCD pin for that LCD function.

--- bill

In fact Don, I vaguely remember reading about what those pins do, probably exactly where you pointed me. But it was certainly after the fact: I know I just used them as is without regard for what they do.

bperrybap:

NickPyner:

  1. While I have not read reply #9, I have read the original post, which I recommend to you, and the problem is very much like the problem I had, right down to the source of code that could be problematical.

The problem really isn't the code, it is that the constructor that configures the pins used by the
LiquidCrystal library does not match how the lcd is wired up.
So in reality it is that the LCD is mis-wired. i.e. the LCD is not wired up the way the sketch told the library it was wired.
All the matters is that they match. You can wire the lcd up according the constructor or alter
the constructor in the sketch to match the wiring.

The problem is the code inasmuch as that quoted was written for the LCD shield designed and sold by the code writer, Oxner of tronixstuff and, while there is nothing wrong with that, is not likely to work with anything else. The shield in question is looks like no other I know of.

The problem is also the code inasmuch that, if the LCD is on a shield as I suspect, it is the code that is going to be fixed.

I can't imagine any variation in the wiring of the HD44780 but the distribution to the Arduino the pins is entirely down to the whim or convenience of the circuit-board designer. Looking at my eBay cheapo shield, I can't really see why anybody would do it any other way and this might go quite go quite some way to explain why the pin sequence I quoted is in fact quite common - hence my recommendation, and indeed my lack of surprise in seeing it recommended by others here.

Having the intended relationship of the module's pins to Arduino commented in the sketch would certainly relieve a bit of stress amongst newbies like me, particularly since this can be easily determined on the shield itself. Still, it's all part of the game, and the 16x2 is child's play compared to the Nokia 5110. Knuckles is going to love one of them....

I am glad I missed this due to some full day teaching arrangement. So who are these well-intended advice givers without any regards what programming is about?

The problem is the code inasmuch as that quoted was written for the LCD shield designed and sold by the code writer, Oxner of tronixstuff and, while there is nothing wrong with that, is not likely to work with anything else. The shield in question is looks like no other I know of.

There is nothing in the original post that mentions anything specific about the LCD that he is using or the code that he is trying to run it with. I don't see any mention about whether he is or is not using a shield as the word 'shield' appears nowhere in the post.

Here is a copy of the very first reply - it is still valid ...
"There have been dozens (it seems like hundreds) of posts similar to yours in this forum over the past few years. It would only take a cursory look at them to see that we cannot help you unless you post the exact code that you used along with a clear photograph of your connections."
... except for the fact that the original poster has vanished.

Don

no he hasnt he is still here .

i keep trying the examples and checking things over and over with the various examples which are mostly the same ,ie the arduino cookbook example on page 365 which ties up roughly with the others such as the UNO library examples .obviously the data pinouts can change and the R/W on grnd ,and reset on 12 and E on 11
i have left the tronix example alone as that seems dated .
5v is taken from the 5v pin on the UNO ,i take it thats ok as shown in the example

the displays are parallel sparkfun LCD with 16 pins and 2x16

and a sparkfun 4x20 parallel display with 16 pins .

the prog i used is on page 366 of the arduino cookbook as thats recent and tried and tested i presume by michael margolis who wrote it

and here http://arduino.cc/en/Tutorial/LiquidCrystal

knuckles,

You got good spirit but you are simply repeating your mistakes until you get help. Follow the first reply you got from floresta. Best advice I've seen on this thread.

the example on page 366

says LiquidCrystal lcd (12, 11, 5, 4, 3, 2); and thats what i have been using so far ...and wiring ties up with this setup but dont work ...

this is it ,pretty standard in all sources with pin numbers as shown

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

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}