Work in progress: I’ve attached polymer-coated LED strips to the soles of these patent leather (because I like shiny things,) Doc Martens and am in the process of finishing the wiring. I’ve not yet decided if these will simply go to work with me or all the way out to Burning Man.
- Arduino Mini USB Adapter*
makershed.com part number MKSP3 approximately $20
- Serial Enabled 16×2 LCD – Red on Black 5V**
sparkfun.com part LCD-00812 approximately $25
- Solderless Breadboard 2.14" x 6.5"
makershed.com part number MKEL3 approximately $8
- Solderless Breadboard Jumper Wire Kit (optional, you can use 22AWG wire off a spool)
makershed.com part number MKEL1 approximately $6.25
- An LED of your choice (optional)
I don't have a specific type for this part, pick any but the 1 watt models.
- A resistor of a value suitable for your LED (required only if using the LED)
Use an online LED calculator such as this one to obtain the correct resistance for your LED. Note that the source voltage will be 5 volts. Your LED should include a data sheet detailing the voltage drop across the LED and the forward current. You'll plug those three values into the calculator to obtain the correct resistor value.
* There are currently two revisions of the MiniUSB Module, the newer model has fewer pins than the original and omits control lines that may be used for connecting LEDs or other switched applications.
** Note that LCD panels natively come with a parallel interface. The serialized models have a secondary controller attached which accepts serial and drives the parallel display. The controller is also responsible for managing text wrapping and other convenience features such as backlight drive and control. It makes more sense to pay the premium for the serial edition to avoid adding a complex component to your design. Also note that there is now a 3.3-volt edition; to avoid additional power conversion circuits you'll need to ensure you're ordering the 5-volt edition.
For convenience, a good breadboard, a pre-cut jumper wire kit, and a multimeter (aka DVM,) should appear in your toolkit. Radio Shack sells suitable parts, except for the pre-cut jumper wire so be sure to select a good solid core 22AWG wire spool if shopping at Radio Shack. While you're at the store, go ahead and invest in a soldering iron and a spool of rosin-core solder. This will give you a valuable tool for reconnecting broken leads or connecting new ones in a more advanced assembly.
After prototyping the Display on a breadboard, it makes good sense to plan a more permanent design. A breadboard loosely holds the connections together, and the display itself is probably not strongly mounted. It's also rather unsightly for the gentleman or lady's numerical machine console. Much better to repackage the contraption in a nice project box or handmade enclosure. How to do that is beyond the scope of this brief introduction, but should be on your mind as you place part orders and consider a longer view of your Display implementation.
Writing to the display:
This introduction assumes the reader is more familiar with software development than the author. My experiments thusfar have been limited to using a terminal emulation program and Python with the pySerial library. The key point is that whatever environment you choose, you'll want to access the serial port, send data at 9600 baud, eight bits, no parity, one stop bit – and if possible also control the Ready to Send (RTS) and Data Terminal Ready (DTR) control lines. pySerial offers access to the control lines, and is fairly easy to implement.
<Pyserial example goes here> Google pyserial examples.
The Serial LCD controller has a command library that governs cursor movement, clearing the screen, backlight control, and other functions. Two things: You'll need to know how to send control characters to the serial port – this is not as trivial in most cases as I expected it to be, and depending on your language of choice, you'll have to implicitly send a character directive that sends raw bits rather than ASCII. Second, you'll be able to find the screen control commands here (PDF).