Connected it up to the Arduino for a test run and flashed the 'Hello World' LCD example, and I get nothing on the screen.
I've double and triple checked the connections and everything is wired up as it should be.
I can adjust the contrast until all characters go white.
There's just no display.
My main question is has anyone had this happen to their LCD? If I can confirm it is dead before spending a few hours trouble shooting that would be great, haha
Thanks for taking the time to read this, I hope someone has some suggestions!
Well it looks like a pretty standard display so I guess you get the standard answer.
Since all you did was change the connections, from breadboard pins to wires, then it is these connections that are suspect. Without a good photograph that shows your connections I can only guess at the problem.
With only the power, contrast, and backlight connections made you should vary the potentiometer and see what happens. At one extreme the display should be blank. At the other extreme you normally see only one row of blocks, but with some displays you will see blocks in all 32 character positions. You should be able to adjust the potentiometer until you see just the top row of blocks.
With that part working you should then connect your LCD module to the Arduino and try out a sketch. Don't forget to connect pin 5 of the LCD to ground.
The insulation is a little chewed as I went through and re-flowed all of the joints just in case (it hasn't helped).
I have pin 5 (R/W) grounded, though on my data sheet it is R/!W [H: Read (MPU->Module) L: Write (MPU<-Module)]
It did used to work wired up as standard though so I doubt it is that, and tying it high doesn't help either.
Without a good photograph that shows your connections I can only guess at the problem.
Let me rephrase that. Without a good photograph that unambiguously shows all of the connections between your LCD module and your Arduino I can only guess at the problem. You should also post a copy/paste version of the code that you are using.
I have pin 5 (R/W) grounded, though on my data sheet it is R/!W [H: Read (MPU->Module) L: Write (MPU<-Module)]
It did used to work wired up as standard though so I doubt it is that, and tying it high doesn't help either.
I don't think you have interpreted the datasheet correctly. When you to send information to the LCD module you are writing and when you retrieve information from the LCD module you are reading. The current LiquidCrystal library has no provisions to read from the module, it only writes to it. The RW pin must always be low.
/*
 LiquidCrystal Library - Hello World
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 prints "Hello World!" to the LCD
and shows the time.
 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
* LCD R/W pin to ground
* 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 22 Nov 2010
by Tom Igoe
This example code is in the public domain.
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(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);
}
I would have to say I overlooked that part,
Yes, even though it tells me to have a look on the pin out table.
Though I assume its a standard LED in the backlight, so given that it still works it hasn't gone pop. At most I have probably taken a load of hours off its life time.
Thank you for pointing this out though so I could rectify the situation
Are you also saying that you think this may be the reason for the whole thing not functioning??
Are you also saying that you think this may be the reason for the whole thing not functioning??
It's a possibility. Without a series resistor the LEDs were trying to draw an excessive amount of current. Hopefully the regulator in your power supply just dropped the voltage to the point where it was not being overloaded and therefore caused the LCD controller to stop functioning.
Try putting a resistor in series with the backlight and see if it works.
I think that you should pull all of the wires out and start over again. Get the backlight functioning first (pins 15 and 16). Next add the controller and display power (pins 1, 2, and 3) and adjust the contrast until you can just see the single row of blocks. Finally connect the other seven LCD connections, six to the Arduino I/O pins and RW to ground. You could take a look at Lady Ada's tutorial (Arduino Tutorial - connecting a parallel LCD), but that's basically what I outlined above.
You might want to try some different I/O pins and a simpler sketch as well.
#include <LiquidCrystal.h>
//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);Â Â Â // put your pin numbers here
void setup()
 {
 lcd.begin(16, 2);             // this will work for all displays except some rare 16x1's
 lcd.print("hello, world!");
 lcd.setCursor(0,1)
 lcd.print("it works!");
 }
void loop()
 {
 }
Check your 3-way and 4-way junctions with ohmmeter to make sure what are under the heat shrink wrap is well connected. If your rw is not connected to ground (I have to assume it is since it goes into a four way junction under wrap), then the initialization sent from Arduino is not received and you have the boxes on screen.
Don, I was reading the doc, it mentioned db0-7 and rw rs have certain mos pull up current on page 48. Does that mean when disconnected they are all internally pulled up?
Don, I was reading the doc, it mentioned db0-7 and rw rs have certain mos pull up current on page 48. Does that mean when disconnected they are all internally pulled up?
It could be interpreted that way. It also could be interpreted as a desired pull-up current to be implemented by an external resistor. I think your interpretation is more likely to be correct since the values on that page are labeled as 'characteristics' of the device as opposed to 'ratings'.
As it turns out, while I typed this I had a look at the pot and it's 100k rather than 10k. But as it's providing a reference voltage not resistance this doesn't matter?
#include <LiquidCrystal.h>
//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);Â Â Â // put your pin numbers here
void setup()
 {
 lcd.begin(16, 2);             // this will work for all displays except some rare 16x1's
 lcd.print("hello, world!");
 lcd.setCursor(0,1)
 lcd.print("it works!");
 }
void loop()
 {
 }
#include <LiquidCrystal.h>
//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);Â Â Â // put your pin numbers here
void setup()
 {
 pinMode(13, OUTPUT); //SM LED pin
Â
 lcd.begin(16, 2);             // this will work for all displays except some rare 16x1's
 lcd.print("hello, world!");
 lcd.setCursor(0,1);
 lcd.print("it works!");
 }
void loop()
 {
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13,LOW);
  delay(500);
 }
Have you tried it with RW high just in case their datasheets are actually correct (in which case it would be their modules that are exactly backwards from all others in the known universe).
Also, you could try some pressure on the frame surrounding your LCD glass. We have seen some cases lately where that has been a problem, although the symptoms are typically a really messed up display instead of no display at all.
Yes, I have just tried tying it high again, and there is no difference, exactly the same symptoms. It would be quite ridiculous if it were backwards though, a sure way to reduce your potential market.
I have also tried pushing on it, but nothing.
I have ordered myself a new one, so I will be able to check the ardunio is happy when that arrives (found some for £2.89!! ) but that will be a few days, and it would be a shame to throw this one out if it is something cure-able.
It does look like your wiring is ok so what to do? If it was me I would try another plan of attack with more control on my part.
Have not looked at how the 4bit is done in the library but it has been done in stand alone code. Search the playground (I just googled arduino 4 bit lcd) and load one that you find. Will need a little moding for the pins. In the code you will see how the pausing is done between commands (especially in the intializing stage). It will not hurt to crank those values up to slow things down between writing to the LCD.
I mainly do assembly for a hobby ( Arduino does make it too easy) but in my routines I wait for a little bit (the LCD is trying to intialize itself when first powered up) then I bang the initialize command 3 times in a row then the 4 bit command all with nice delays. With the stand alone code you can play with it (the delays and the sequence of commands).
As an alternative you can try it in the 8bit mode just to throw at it what you can while you are waiting on the new one.