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.
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
then when you want to display a number
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 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
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.
The display in low light levels – note the annoying red power LED!
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.