HD44780 Doesn't Reinit After Power Off/On

Well it's a bit embarrassing, but the original LCD I had seems to be working now. I was going ahead with trying to develop a sketch and had occasion to change the Arduino pin assignments that the LCD uses. (I intend to use Adafruit's data logger shield and I believe that pins 10-13 are needed for the SD card interface.) So, I moved the LCD to pins 4-9 and now when I reboot the Arduino, the LCD comes back alive. I'm not sure why the pin assignments should make a difference. There probably were (and still are?) subtle problems with my wiring.

Right now my breadboard is quite a spaghetti-ball of wires. Doesn't give me a warm fuzzy feeling that all the connections are electrically sound. Does one sometimes have to build a more permanent setup before even trying to write a sketch, just to make sure the circuitry is sound?

And, I have many other questions - though I'm not sure where I should post them. Perhaps someone could direct me to the best place to ask these:

  • Is it really feasible to do an Arduino project that uses all the digital pins? The circuit I have now uses digital pins 0-9 and analog pins 0-2. I intend to use digital 10-13 and analog 4-5 for the logger shield. Is there an unwritten rule that says don't go above a certain number of pins? If so, I might need a Mega for this project.

  • I now have a digital pin 0 that is "frozen" in the HIGH position. I'm trying to use pin 0 as a pushbutton input. Near as I can tell, I have a pull-down resistor in place, but I'm seeing a voltage of about 4.5 between pin 0 and ground when the switch is open. Pressing the button brings it up to 5v, but pin 0 never goes low. Another wiring problem? (As above, there are a lot of digital pins in use already. Am I going above a current limit of some kind?)

  • Is it feasible/reliable to run the LCD display off of a shift register? Since all the LCD pins are outputs, this might reduce the number of digital pins required from 6 to 3. Though, I assume that some changes to the LiquidCrystal library would be needed to make this work. Might also be dicey to mesh the timing of the shift register with that of the LCD.

Thank you for any guidance you can provide.