Sparkfun LCD 00709 16x2 - Integrating into my project?

This is the Pinout if the pins are vertical on the left from top to bottom:
PIN1 = tie to gnd
2 = tie to 5v
3 = resistor ~2-3K to gnd
4 = rs = tie to pin 12 on arduino
5 = r/w = tie to gnd
6 = enable = tie to pin 11 on arduino
7-10 = open (no connections)
11 = tie to pin 5 on arduino
12 = tie to pin 4 on arduino
13 = tie to pin 3 on arduino
14 = tie to pin 2 on arduino
15 = tie to 4.2 V (5V is working for me right now)
16 = tie to gnd

(btw im not quite sure what the above pinout means, I got it off of sparkfun's product page)

I'm new to a lot of these components. So, please bare with me.
I'm using an Arduino micro. I have a couple of projects that are using a majority of the digital pins (4-10).
Can I minimize the amount of pins the lcd display uses? It looks like I only have 4-5 digital pins to work with. Does "tie to pin" mean i can put it all on the same row of the bread board and jump it to one pin in the Arduino?

Thanks for your help!

First of all in a situation like this you should provide a link to the product page and to the data sheet for the device.

The pinout that you have quoted is from the Sparkfun page, but not from Sparkfun, and it is not correct in several respects.
(1) The pins are horizontal at the top, from left to right. This is important since devices with the pins on the bottom sometimes have a nonstandard pinout.

(2) Pin 15 must be connected through a resistor to +5v. The resistor must be large enough to deop about 0.8 volts, leaving about 4.2 v at pin 15. Try 150 ohms and see if it works.

(3) Pin 3 should be connected to the wiper (center connection) of a potentiometer whose ends are connected to +5 and GND. See page 2/9 of the extended datasheet. Many LCDs function adequately with this pin at 0 v which is essentially what connecting it to GND through a resistor accomplishes.

(4) "Tie to pin" means "connect to pin".

This is a standard, run-of-the-mill, character mode LCD that you can connect according to the tutorial at You can use any available I/O pin on your Arduino, including the 'analog' pins, for any of the six required connections to the LCD module. Just make sure that you change the LiquidCrystal lcd(...) contents to match.

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

You can minimize the number of I/O pins required by using a serial interface adapter. There are lots of posts about this, look for the term I2C.


Thanks, Don;

I got it working. Now I'm trying to read 4 serial values. Everything initially loads correctly, but eventually gets all scrambled when the serial value changes (2digits -3 digits). I've attached pictures (see photo 3).

// Wait for serial input (min 3 bytes in buffer)
  if (Serial.available() > 2) {
    digitalWrite(10, HIGH);
    // Read the first byte
    lcd.setCursor(0, 1);
    //lcd.print("transmitting... ");
    startbyte =;
    // If it's really the startbyte (255) ...
    if (startbyte == 255) {
      // ... then get the next two bytes
      for (i=0;i<2;i++) {
        userInput[i] =;
      // First byte = serial value?
      s = userInput[0];
      // Second byte = which value?
      pos = userInput[1];
      // Packet error checking and recovery
      if (pos == 255) { servo = 255; }

      // Assign new position to appropriate serial value
      switch (s) {
        case 1:
        case 2:
        case 3:
        case 4:

photo 1.JPG

photo 2.JPG

photo 3.JPG

I got it working.

For now.... You really should consider adding the resistor I mentioned in (2) above.

Everything initially loads correctly, but eventually gets all scrambled when the serial value changes (2digits -3 digits).

When you try to overwrite a 3 digit number with a 2 digit number one of the original digits remains on the display. When writing a new value over an old one you can reposition the cursor, display enough spaces to cover up all of the old digits, reposition the cursor again, then display your new value.


I tried to replace the values with spaces before I posted this but it sill seems like the cursor goes to a random position that on the same line over writing the "s(x)=" text. any suggestions for taming the random "x-axis" repositioning of the cursor? (see picture attached)

photo 3.JPG