First off, I enjoy showing my wife thing that I build or write. She enjoys showing me her projects, but as she is a photographer, her stuff is usually cooler looking. Fancy cron jobs and database queries just don’t have the bling of an underwater naked woman in an artful pose.
Since I started playing with Arduino’s, my wife knows that her kitchen table will be full of wires and little electronics that our kid doesn’t need to pull off the table. Little LED’s that blink or some serial output to a computer are cool, but not so impressive. But serial output to an LCD, a cool blue LCD, now things start to get interesting.

RFID Reader
Those are pictures of a RFID reader that I built the other day. My 1.5 year old daughter thinks its the coolest thing. Not only does an LED light up when a tag is read, but it has that fancy LCD. Good design should be usable by little kids. She can work the remote to our Mac’s, she can work an iPod, and now she can work my RFID reader.

RFID Reader LCD
If she knew how to solder, she could probably put one of these LCD’s together. I am using 2 LCD’s from Modern Device and their Serial LCD Board to drive them. Its as easy as adding a second serial output to your projects to add in an LCD.
There are a few other things you have to send on that serial connection and they are well documented at the bottom of the the above link. There is also a test function on the Serial Board to make sure you hooked everything up properly. The board will run either LCD, but you have to have different headers installed and a different resistor for the backlight. No resistor, just a jumper wire for the 16×2 and a 15 ohm for the 20×4.

LCD117 Serial LCD Board
I had some problems with one of my Serial LCD Boards, but it seems to have been a hardware problem, I resoldered everything and it worked. Paul at Modern Device has a forum set up where he will help you with any problem. It’s very cool to have a company that sells things at good prices and will help you with their products.

20x4 LCD
Here is some example code to send data to the 16×2 LCD (just like the RFID Reader)
#include <SoftwareSerial.h>
#define rxPin 4
// rxPin is immaterial – not used – just make this an unused Arduino pin number
//the txPin is an unused digital pin, you can use analog pins for digital pins
#define txPin 14 // pin 14 is analog pin 0, on a BBB just use a servo cable
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);
void setup(){
pinMode(txPin, OUTPUT);
mySerial.begin(9600); // 9600 baud is chip comm speed
mySerial.print(”?G216″); // set display geometry, 2 x 16 characters in this case
delay(100); // pause to allow LCD EEPROM to program
mySerial.print(”?Bff”); // set backlight to 40 hex
delay(100); // pause to allow LCD EEPROM to program
mySerial.print(”?s6″); // set tabs to six spaces
delay(1000); // pause to allow LCD EEPROM to program
}
void loop(){
mySerial.print(”?c0″); // turn cursor off
delay(300); //without the delay, the LCD will crash
mySerial.print(”?f”); // clear the LCD
delay(100);
delay(3000);
mySerial.print(”?x00?y0″); // cursor to first character of line 0
mySerial.print(”LCD117 test”);
delay(3000);
mySerial.print(”?x00?y1″); // move cursor to beginning of line 1
mySerial.print(”moderndevice.com”); // crass commercial message
delay(6000); // pause three secs to admire
mySerial.print(”?f”); // clear the LCD
mySerial.print(”?x00?y0″); // move cursor to beginning of line 0
mySerial.print(” LCD 117 chip by”); // displys LCD #117 on the screen
mySerial.print(”?x00?y1″); // cursor to first character of line 1
mySerial.print(” phanderson.com”);
delay(3000); // pause three secs to admire
mySerial.print(”?f”); // clear the screen
delay(1000);
}
