Uno + LCD + Sensors

Hey guys.

I have the Arduino Uno: http://arduino.cc/en/Main/ArduinoBoardUno

The 20x4 HD44780: Standard LCD 20x4 + extras [white on blue] : ID 198 : $17.95 : Adafruit Industries, Unique & fun DIY electronics and kits

I also bought a mini-bread board and the usb cable for the uno.

Basically what I'm trying to do is read some voltage outputs from various sensors (they output in the millivolt range) and then display these readings on the LCD screen. Seems pretty simple in concept.

This will be installed on a mobile vehicle, so I will be powering my board with the Vin using the 7-12V, not by the USB or normal power jack.

I've looked at several websites that have recommended wiring for connecting the LCD to the Uno but they all seem to vary slightly:
http://www.arduino.cc/playground/uploads/ScematicLcd/scematic_lcd.pdf
and

I'm just looking for any guidance on getting started. Any input would be greatly appreciated. Thanks for your time!

If the sensors are really only producing a few millivolts you will need some amplification. The theoretical resolution of the Arduino analog inputs is about 5mV (using 5V reference) or about 1mV using the internal 1.1V reference. In practice there will be noise and errors somewhat larger than those figures, say 10mV and 2mV. Depending on the sensitivity/accuracy you need you may want to boost sensor signals with an op-amp circuit.

You need to be careful with vehicle 12V power - it can be very noisy and have large spikes on it, something to watch out for.

I've looked at several websites that have recommended wiring for connecting the LCD to the Uno but they all seem to vary slightly:

An under-emphasized feature of the LiquidCrystal library is that it is capable of using any Arduino pin to drive any LCD pin. All you have to do is make sure that the argument (the stuff in the parentheses) of the 'LiquidCrystal lcd( ... );' statement matches your connections. None of the examples that I have seen seem to emphasize this feature although some do allude to it.

This feature, along with the syntax, is explained nicely in the reference material if you know where to look LiquidCrystal - Arduino Reference.

The LiquidCrystal Tutorial at http://arduino.cc/en/Tutorial/LiquidCrystal could stand an extra comment:

// initialize the library with the numbers of the interface pins
// LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

So for your first link, the one from the playground, you would use:

// LiquidCrystal lcd(RS, RW, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 6, 7, 8, 9, 10);

And for the second, the one from Hacktronics, you would use:

// LiquidCrystal lcd(RS, RW, E, D4, D5, D6, D7);
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

Note that these last two examples, for some unknown reason, tie up an LCD pin for the R/W line while most other implementations just ground the R/W pin of the LCD module. There's no difference in performance when using the current version of LiquidCrystal.

Don