I am working on a project where, ultimately, I will be driving a 16x2 1602 LCD with a ATtiny85. For now, however, I am testing Shift Register libraries, and there are several out there. I am testing several and will, eventually, pick one. So far I have tested ShiftLCD by Chris Parish and LiquidCrystal_SR by Francisco Malpartida. They both work well but require significantly different wiring. I have posted my test "Hello World" for both libraries below. The wiring differences are noted. I thank both Chris and Francisco for generously donating the libraries to the community.

Demonstrates the use a 16x2 LCD display. The ShiftLCD 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 number of seconds since reset.

void setup() { // set up the LCD's number of rows and columns: lcd.begin(MAXCOLUMNS, MAXLINES); // 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); //lcd.setCursor(column, row); // print the number of seconds since reset: lcd.print(millis()/1000);}

Demonstrates the use a 16x2 LCD display. The ShiftLCD 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 number of seconds since reset.

The schematic at this link is correct except that, in this implementation, The MOSFET circuit is replaced by a 330 ohm resistor (see above). http://cjparish.blogspot.com/2010/01/controlling-lcd-display-with-shift.html

Library modified from the original LiquidCrystal Library This example originaly by Tom Igoe, Jul 2009 Example modified for use with ShiftLCD Chris Parish, January 12th 2010 */

void setup() { // set up the LCD's number of rows and columns: lcd.begin(MAXCOLUMNS, MAXLINES); // 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); //lcd.setCursor(column, row); // print the number of seconds since reset: lcd.print(millis()/1000);}

I always wonder what the author of a program named NewWhatever will call his next version. Perhaps 'NewerWhatever', or the worst possibility - 'NewestWhatever'.

What is really important and troubling is the fact that virtually every 'new' LCD library that comes out:(a) still contains the same irrelevant comments that have been with us since the early days of the original LiquidCrystal library,and(b) fails to follow the initialization code sequence that is recommended in the data sheets.

I got it working. The circuit was fine. Something was wrong with my IDE, so I re-installed it then was able to get the liquidCrystal_SR library to work. I still get the same errors for the shiftLCD library but the other works fine for my purpose. Thanks for sharing this code, and also pointing these libraries out to us. I have been trying to get this 595 to run my LCD for weeks. Here is my schematic I made with Fritzing for anyone who is interested.

"I have not failed. I've just found 10,000 ways that won't work."Thomas A. Edison

How do I go about powering everything off another voltage supply? Would this setup work using either a wall adapter or battery, as long as I connect all the grounds?

It wouldn't work very long with that battery.You would have to power the Arduino somehow.I don't see the recommended capacitor on the input side of your voltage regulator.Not too many LCDs give a suitable display with that contrast pin circuit.How did you manage to get two wires into one breadboard hole?

They are under $5 and perfect for Arduino breadboard work, specifically designed for the type of breadboard shown in your Fritzing image. You'll also need a 6-to-9 volt wall wart transformer - maybe hiding in your closet or at the local thrift store.

I really just wanted to know if this was the right way to do it. I heard that in some cases you can have multiple voltages in a system and you connect the grounds together. So basically the question is will the circuit short anything out. I will be using a seperate power supply for the arduino of course and the 9v can be replaced with a wall wort. I have been wanting to get a breadboard ps like that but for now i am using a voltage regulator and 2x 10uf caps with a .1 uf. Also, lets say I want to add a mosfet to power a high current device such as a solenoid. Would I also connect that ground to the circuit? Do you always connect all the grounds in these situations?

Thanks for the reply,Anthony

"I have not failed. I've just found 10,000 ways that won't work."Thomas A. Edison

Yes, you can use multiple power supplies, connecting the common, within reason. The Vcc should be as close to the same as you can get it, given that there will be some feedback through circuit connections, such as the Atmel chip, i/o chips, etc.

I have downloaded the "latest" library from Francisco's GITHUB (dated 20Aug2011) and installed it. When I go to compile your example code, I get errors related to "I2CIO.cpp", where "Wire.h" does not exist. I am using the IDE V1.0. I went through his .ccp file and noticed that it says "#include...Wire.h". Are there changes I need to make to this file in order for this to work, or should I reinstall the IDE as was suggested above by roachburn?