The RGB LCD shield for Arduino 65K color KIT includes all the components to assemble a ready to use LCD shield for Arduino and compatible boards like Freeduino.
First the schematics:
The LCD module has a backlight made of 2 white LEDs that requiere approximate 9V with a max 19mA current to work. As this voltage level is not available on the Arduino board, I used an ST232 RS232 driver to get 8V DC from the standard 5V Arduino power supply. The backlight driver circuit is in a separate board (yellow) that will be inserted on top of the RGB LCD shield PCB.
The first step is to unpack the KIT. It contains the following components:
1 x RGB LCD module
1 x RGB LCD shield PCB
1 x LCD module to PCB soldering adapter
1 x LM317T variable voltage regulator
2 x 10uF electrolytic capacitors
5 x 0.1uF ceramic capacitors
1 x 330 ohm resistor
1 x 430 ohm resistor
5 x 1Kohm resistors
5 x 1.3Kohm (1K3) resistors
1 x 40-pin male breakable header (you need to cut 2 8-pin sections, 2 6-pin sections and 1 1-pin section)
1 x 2×3 long leg female pin header
1 x DC step up PCB (yellow)
1 x ST232 RS232 driver IC
1 x 110 ohm resistor
1 x 6-pin female header
1 x 2×3 pin female header
Let’s start with the main RGB LCD shield PCB. The LCD module needs to be soldered first. Separate the LCD module and a small green thin PCB used to attach the LCD module to the main black PCB.
Apply some solder in one of the pins of the LCD module, you can choose either pin 1 or pin 10 (pin 1 is the one to the right of the picture).
Once the solder is applied, place the small thin PCB and align the 10 pads to the 10 pads on the LCD module. Heat the pin that has the solder to attach the small thin PCB (the adapter). Once you are satisfied how it is aligned (make sure the pads are correctly aligned, to avoid shorting the pins), solder the rest of the pads.
Now it is time to solder the LCD module to the main black PCB. The process is the same, apply some solder in one of the pins (1 or 10) and align the LCD module with the adapter to the 10 pads on the black PCB. Solder all the pads. Be careful to not add excessive solder to create shorts in the pads.
The LCD part is done. Let’s continue with the Power Supply (Voltage regulator). This part of the circuit, takes 5V from Arduino and using the LM317 variable voltage regulator, generates 2.9V to supply the LCD module. The components are: LM317T, 1 x 10uF electrolytic capacitor, 2 x 0.1uF ceramic capacitor, 1 x 430 ohm resistor and 1 x 330 ohm resistor.
Solder first the LM317 voltage regulator. Then you can solder the 0.1uF ceramic capacitors C2 and C3. Orientation is not important for the ceramic capacitors. Then solder the 10uF electrolytic capacitor, negative leg to the left, positive (long) to the right. Next you need to solder R12 430 ohm resistor (you can follow the guide in http://www.bpesolutions.com/atechnical/ResistorQV.pdf to calculate the resistor colors). 430 ohms is yellow, orange, brown. Then solder R13 330 ohm resistor (orange, orange, brown). The power supply section is complete.
This is how the board looks now with the power supply section ready
Next solder the 10 resistors used to create the logic level converter from 5V to 2.9V. We will be using 5 x 1K and 5 x 1.3K (or 1K3) resistors. 1K resistors are coded brown, black, red and 1.3K resistors are coded brown, orange, red.
This is how the board looks with the voltage dividers (10 resistors) soldered.
The next step is to solder the headers. You need to break the 40-pin male header into 2 8-pin section, 2 6-pin section and 1 1-pin section (just grab 1 pin and twist it until it breaks).
Solder the pin headers. The male headers are inserted from the bottom of the PCB to the top. Once soldered, you need to plug this shield to the Arduino board, so you need the long side of the pin header going downwards. The 2×3 female header is soldered backwards, also from the bottom of the PCB to the top, but long leg first. You will also apply solder on the top side of the PCB. Remember that the ICSP pin header on the Arduino board is male, while all the other headers are female. The 6-pin headers are not easy to insert, as the holes are not aligned on purpose to make them fit better. Push this headers all the way in. You will notice slight bending of the pins, but it is ok. It will make the shield fit tighter on the Arduino board.
It is easier to know how all the headers go if you look at the picture of the finished board.
The last pin you need to solder on the main black PCB is the 1-pin header. It goes on the left pad of R11. You can see R11 is empty.
Next step is to assemble the DC step up converter. This little yellow board converts 5V from the Arduino board to approx 8V. It is enough to drive the white LED backlight.
I was looking for a “true” step-up converter, but they are packaged in tiny tiny devices, almost impossible to solder. So I realized that the ST232 with a couple of capacitors can generate 7-12V (even negative!), and they are cheaper than “true” step-up converters and needs less external components, so I tested this circuit and it worked just fine. Added a 10uF capacitor to filter the 8V output. This 8V goes to the Anode of the LCD backlight, but through a current limiting 110 ohm resistor. This tiny board is very easy to assemble, just insert all the components (ST232 chip, 1 6-pin female header, 1 2×3 female header, 3 x 0.1uF ceramic caps, 1 x 10uF electrolytic cap, 110 ohm resistor).
And here is the board assembled. This tiny board must be inserted in the RGB LCD shield board by using the ICSP header and one of the 6-pin female headers. Remember the 1-pin header that you soldered on the left pin of R11? OK, you need to align the 2nd pin from the left of this tiny board to the 1-pin header on the main board. The 6-pin header, viewed from the top, has the following pinout: [GND] [8V] [GND] [GND] [5V] [GND]. [8V] pin must be inserted in the 1-pin header on the main board. The GND comes from the ICSP header.
And this is how everything looks when the tiny board (step-up converter) is inserted, the board is plugged to USB and you upload the sample sketch to the Arduino board.
The sample code is self explanatory (You don’t need to mess with the setup code, just look for the piece of code that sends the characters to the screen, how the dots are turned on and off, etc. I created 2 codes, one using digitalWrite() and another one using direct AVR I/O… I found the 2nd method to be almost 10 times faster, and drawing things on the screen, you can notice the difference in speed.
The sample codes are here:
Sample using digitalWrite()
Sample using direct AVR I/O