Uncategorized

RasPiO duino with nokia 5110 LCD

I’ve added a cheap nokia 5110 LCD to my RasPiO Duino, it took me awhile to get the example code to work.

I downloaded the PCD8544 display library (Nokia 5110) (http://adafru.it/aHn) and the GFX graphics core library (
http://adafru.it/aJa).

Reading the readme note was essential as the name and location of the library is critical to getting this to compile.
One issue to be aware of is that the readme suggested placing the files in sketchbook/Libraries whereas I found that it was required to be in sketchbook/libraries (lowercase L).

The example code compiled OK (once I’d figured out the correct file name and location).
sketchbook/libraries/Adafruit_PCD8544
sketchbook/libraries/Adafruit_GFX

I found a nice clear wiring scheme at duino4projects, which I’ve followed (but I’ve connected the backlight to a pin 9 for PWM so I can dim it). http://duino4projects.com/getting-nokia-5110-lcd-running-arduino/
Pictures of the wiring are less useful as there are different variants of this LCD board so the pin locations are relative.

I added some more female and male headers to my RasPiO Duino, in the prototyping area, for easier connections to peripherals.20150603_205520

I changed the male headers on the LCD for female ones (because I could only find my male dupont cables.

nokia 5110 lcd female header

With a swift (OK, slow and painful) re-write of the display code we have a short countdown to….

I started with code for a countdown timer for 5110 LCD which I found on the Arduino forums:

http://forum.arduino.cc/index.php?topic=145464.0

 

I modified it a bit to give me this:


/*********************************************************************
This is an example sketch for a countdown timer using Nokia 5110 LCD
and adafruit library for the display

RWSDev.net
*********************************************************************/
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// pin 7 - SCE
// pin 6 - RST
// pin 5 - D/C
// pin 4 - DN
// pin 3 - SCLK
// pin 9 - Backlight PWM

// set timer position on lcd
int xPos1 = 16;
int xPos2 = 4;
int xPos3 = 4;
int yPos1 = 16;
int yPos2 = 8;
int yPos3 = 16;

int hours =0;
int minutes = 0;
int seconds = 5;
int backlight = 9;    // setting the PWM Pin for the Backlight
int brightness = 130;   // setting the brightness level for the backlight

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

void setup()   {
  display.begin();
  display.clearDisplay();   // clears the screen and buffer
  display.display();
  pinMode(backlight, OUTPUT);
  analogWrite(backlight, brightness);
}

void loop() {
  while (hours > 0 || minutes > 0 || seconds >= 0) {
    display.clearDisplay();   // clears the screen and buffer
    display.setContrast(30);
    display.setTextSize(2);
    display.setCursor(xPos1, yPos1);
    (minutes < 10) ?display.print("0"):NULL;
    display.print(minutes);
    display.print(":");
    (seconds < 10) ?display.print("0"):NULL;
    display.print(seconds);
    display.display();
    stepDown();
    delay(1000);
  }
}

void stepDown() {
    if (seconds > 0) {
      seconds -= 1;
    } else {
      if (minutes > 0) {
        seconds = 59;
        minutes -= 1;
      } else {
        if (hours > 0) {
          seconds = 59;
          minutes = 59;
          hours -= 1;
        } else {
          trigger();
          delay(5000);
          seconds = 5;
        }
      }
    }
}

void trigger() {
  display.clearDisplay();   // clears the screen and buffer
  display.setTextSize(2);
  display.setCursor(xPos2, yPos2);
  display.println("RasPiO");
  display.setCursor(xPos3, yPos3);
  display.println("Duino");
  display.display();
}

 

Standard