Arduino and Nokia LCD4884 display shield

LCD4884

This Nokia LCD4884 Arduino shield can be obtained from ebay at prices that range from £5 to £30. It comes in a number of variations, but all types are designed to plug straight on top of the Arduino and have a small joystick. Most also provide some pins to allow connection of sensors. Most Digital pins(D2 to D7) and one Analog pin (A0, used for the joystick) are used by the shield, and so not available for other use.

At least one supplier suggests that the device may not be compatible with Arduino 1.6 and above, but the library I found (from Yourduino) works perfectly with Arduino 1.65 and I have included this with the sketch on my Github page here.

The library provides two font sizes and the smaller font contains most characters and will print seven rows of thirteen characters. The larger font only has numeric, + and – characters, so would be ideal to display voltages etc.

Printing:

The library makes it easy to print Strings to the display, simply supply the x,y coordinates and the string

lcd.LCD_write_string(x, y, “string”, MENU_NORMAL);

to print inverse use

lcd.LCD_write_string(x, y, “string”, MENU_HIGHLIGHT);

Printing numbers requires some conversion. At the top of your sketch add

char temp[10];

then when you want to display a number

itoa(num,temp,10);

lcd.LCD_write_string(27, 18, temp, MENU_HIGHLIGHT);

where num is the number you want to print.

When using x and y to position the start of your printing of normal characters use y+9 to start on the next row and x+7 to start at the next character.

The Joystick:

The joystick will produce five voltage values (at A0) for position and one when the joystick is pressed. Values for my joystick are:

                    at rest — 1023

                    up ——  743

                    down —  330

                    left —–  0

                    right —-  508

                    pressed —  143

Example sketch:

Nokia LCD4884 1

Download the files from my Github page here. and install the library. save the sketch in a folder named Arduino_Nokia_LCD4884_clock and upload the sketch to an Arduino (Uno is OK). With the power off, plug in the shield, apply power and the display will flash a splash screen is displayed for a few seconds then the clock screen will be displayed.  Alongside the time display is a number showing the joystick output and this should be around 1023.

Move the joystick to the right and a cursor will move highlighting Set Hours. Press the joystick and the hours will flash (seconds stop counting) move the joystick up or down until the correct hour is shown. Move the joystick to the right and press down. The minutes will flash, set theses in the same way. Once the correct time is set move the cursor once more to the right and the clock will be in RUN mode (run shown in capital letters and no menu item highlighted.

The accuracy of this clock will not be brilliant as it is not controlled by an RTC but it does illustrate the principle of how to get the LCD4884 working.

Nokia LCD4884 2

The display in low light levels – note the annoying red power LED!

Conclusion:

Not the best of displays considering the cost, the backlight on mine consisted of four blue LEDs that only just illuminated the LCD but were bright enough to be distracting. As usual for shields like this it had a super bright red led to show power (as if the four blue LEDs didn’t show that power was connected!) that is very distracting. The display has very little contrast and can be difficult to read, but can show graphics of a sort. All in all its not very good, but at least it does not need too much programming to get it to work.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s