Programming HD44780 LCD module

I have two simple programs, one of which is Hello World. To my eyes, the code below seems to be the same, but the way the two different projects is wired are different. For example, in one program, Pin 3 of the LCD is to be connected to the pot wiper. In the other program, Pin 14 of the LCD is to be connected to the pot wiper. In the Hello World sketch, pin 3 is the wiper; pin 4 to A(rduino)12; Pin 5 to Grd; Pin 6 to A11; Pin 11 to A 5; Pin 12 to A4; Pin 13 to A3; Pin 14 to A2.

In the second program, Pin 3 to A2; Pin 4 to A3; Pin 5 to A4; Pin 6 to A5; Pin 11 to A11; Pin 12 to Grd; Pin 13 to A12; Pin 14 to pot wiper.

The two codes are given below. What in the code differentiates between the two different pin assignments?
Both codes enable the same Arduino pin numbers.

 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
 * LCD VSS pin to ground
 * LCD VCC pin to 5V
 * 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 (
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe

 This example code is in the public domain.

// 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);

Second code

/* Arduino Projects for Dummies
 * by Brock Craft 
 * Chapter 7: Building an Arduino Clock
 * An alarm clock that uses the Adafruit Industries DS1307 RTC Breakout board
 * and a 16x2 Parallel LCD Display
 * This code just tests the LCD display
 * Uses the default Wire and LiquitCrystal libraries
 * and the Adafruit RTC library
 * v0.1 30.04.2013
 * Adapted from

#include <Wire.h>          // I2C Wire Library for communicating with the DS1307 RTC
#include "RTClib.h"        // Date and time functions for the DS1307 RTC connected
#include <LiquidCrystal.h> // Display functions for the LCD Display 

RTC_DS1307 rtc;                         // Create a realtime clock called rtc
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // Create an LCD called lcd 

void setup () {
  Wire.begin();      // Enables the communication for the LCD
  rtc.begin();       // Enables the RTC
  lcd.begin(16, 2);  // Enables the LCD
  lcd.print("  It's Alive!");    // Print a message, centered, to the LCD to confirm is working
  delay(1000);                   // Wait a moment so we can read it
  lcd.clear();       // Clear the LCD

void loop(){

I just found that both sketches work with the pin assignments from the Hello World program. Does that mean the pin assignment designated for the second program (Chapter 7) are wrong. I could not seem to get that program to work? Page 135 of Arduino Projects for Dummies spells out the second set of pin assignments.


One more question: are the pin assignments from the LCD module to the Arduino always going to be the same? Can I permanently solder a LCD module to an Arduino and then add various inputs on a temporary basis?