Codigo para LCD Nokia 5110 con Arduino

La pantalla Nokia 5110 es ideal para aplicaciones básicas, con el controlador PCD8544 ideal para ser controlado por microcontroladores o tarjetas Arduino.

La pantalla es gráfica, esto es que puedes desplegar tanto caracteres como figuras o gráficos.

lcd_nokia

ESPECIFICACIONES

  • Controlador: PCD8544
  • Protocolo de control: SPI
  • Resolución: 84×48
  • Iluminación: Azul
  • Pixeles: Negro
  • Tamaño: 1.6″

En este tutorial se mostrara como utilizar las funciones básicas de la pantalla Nokia 5110 para mostrar texto en asi como tamaños de fuente.

MATERIAL A UTILIZAR

  • Arduino UNO
  • Cables macho-hembra
  • LCD Nokia 5110

En la tienda virtual de HeTPro puedes encontrar todos los manteriales: hetpro-store.com

Los controladores y software Arduino lo puedes encontrar en: www.arduino.cc

IDENTIFICACIÓN DE PINES LCD NOKIA 5110

El protocolo de control para este display es por medio de SPI, lo cual hace más fácil su comunicación entre este y el  Arduino UNO dejando más salidas disponibles a diferencia de las pantallas convencionales de 16×2.

Pines Nokia 5100

 

DIAGRAMA DE CONEXIÓN

Conexiones con Arduino de LCD Nokia 5100

CODIGO DE EJEMPLO

Para hacer uso del LCD Nokia 5110 es necesario importar una nueva librería llamada LCD5110_Graph, la puedes descargar del siguiente link. Una vez añadida al compilador ingresa el código que está a continuación. Este programa muestra los tipos de fuente, tamaños de números, como hacer líneas y círculos, así como invertir los pixeles.

Descarga de libreria:

#include;
// CLK – Pin 3
// Din – Pin 4
// DC – Pin 5
// CE – Pin 6
// RST – Pin 7
LCD5110 myGLCD(3,4,5,7,6);
extern unsigned char MediumNumbers[];
extern unsigned char BigNumbers[];
extern unsigned char SmallFont[];
extern unsigned char TinyFont[];
int contrast = 60;
int inv=0;
void setup()
{
Serial.begin(9600);
myGLCD.InitLCD(contrast);
}
void loop()
{
myGLCD.setFont(SmallFont);
myGLCD.print(«HetPro»,CENTER,5);
myGLCD.print(«TUTORIAL»,14,20);
myGLCD.print(«LCD NOKIA «,10,30);
myGLCD.print(«5110 «,CENTER,40);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
delay(1000);
myGLCD.setFont(TinyFont);
myGLCD.print(«HETPRO»,0,10);
myGLCD.print(«hetpro»,0,30);
myGLCD.setFont(SmallFont);
myGLCD.print(«HETPRO»,45,10);
myGLCD.print(«hetpro»,45,30);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.setFont(BigNumbers);
myGLCD.print(«123»,0,0);
myGLCD.setFont(MediumNumbers);
myGLCD.print(«123»,40,30);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.drawRoundRect(0,0,83,47);
myGLCD.drawLine(0,5,83,5);
myGLCD.drawLine(0,20,83,20);
myGLCD.drawLine(0,35,83,35);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.drawCircle(42,24,10);
myGLCD.drawCircle(42,24,20);
myGLCD.update();
delay(1000);
myGLCD.clrScr();
myGLCD.setFont(SmallFont);
myGLCD.print(«VISITA»,CENTER,10);
myGLCD.setFont(TinyFont);
myGLCD.print(«hetpro-store.com»,10,30);
myGLCD.update();
delay(2000);
myGLCD.clrScr();
inv=inv+1;
if(inv==1)
{
myGLCD.invert(true);
myGLCD.update();
}
if(inv==2)
{
myGLCD.invert(false);
myGLCD.update();
inv=0;
}
myGLCD.clrScr();
}

DETALLES DEL PROGRAMA

LCD5110 myGLCD(3,4,5,6,7);

Se declara los pines para la comunicacion del protocolo SPI en el siguiente orden (SCK,MOSI,DC,RST,CS)

 myGLCD.InitLCD(contrast);

Se define el valor del contraste en este caso «contrast» lo declaramos con un valor de 60, pero lo puedes ajustar con valores entre 0 y 127

myGLCD.setFont(SmallFont);

Se declara el tipo de fuente ya sea Smallfont o TinyFont

myGLCD.print("TUTORIAL",14,20);

Mostrar texto en pantalla dando las coordenadas en el eje X y Y(«texto a mostrar»,x,y)

 myGLCD.setFont(BigNumbers);

Define el tamaño de los números BigNumbers o MediumNumbers

myGLCD.drawRoundRect(0,0,83,47);

Dibuja un rectángulo con bornes redondos declarando la posición inicial y final del recuadro (X inicial,Y inicial, X final, Y final)

myGLCD.drawCircle(42,24,10);

Dibuja un circulo declarando la posición y diametro (X, Y, diametro)

myGLCD.drawLine(0,20,83,20);

Dibuja una linea declarando la posición inicial y final (X inicial,Y inicial, X final, Y final)

myGLCD.invert(true);

Invierte los pixeles del LDC en «true» es activado

myGLCD.clrScr();

Limpiar pantalla

*NOTA IMPORTANTE
Después de declarar todo lo que se quiera mostrar en pantalla es necesario agregar el siguiente comando, ya que es el que manda la instruccion para visualizarlo en la pantalla

myGLCD.update();

La carpeta de la librería contiene el manual de estas y otras funciones para controlar la pantalla Nokia 5110

13 comentarios en «Codigo para LCD Nokia 5110 con Arduino»

  1. hola amigo, quisiera visualizar un dato de un adc en la pantalla pero no me deja con el

    myGLCD.print(‘adc0’,CENTER,10);

    me dice q el «adc0» es entero y no se puede poner en char

    1. Que tal Francisco prueba con esta linea

      myGLCD.printNumF(adc0,1,CENTER,10)

      donde:
      adc0: donde almacenas la lectura del ADC
      1: la cantidad de decimales que requieras
      CENTER,10: la posicion de la pantalla

      Saludos

    1. Hola que tal Gris, solo pon en la instrucción myGLCD.setFont(TinyFont); el tipo de fuente que requieres, seria myGLCD.setFont(BigNumbers); por ejemplo. Y solo pon myGLCD.print(«Texto»,PosiciónX,PosiciónY); me avisas como te fue. Saludos

  2. Gracias Héctor!

    Si funcionó si pongo BigNumbers, pero solo si pongo números fijos

    no los del timer, es decir; «07» donde va el texto

    pero como hago para traducir decenas de minuto y unidades de min

    a chr para que entre dentro de las comillas » » para desplegar?
    y podrias explicar como se genera el bitmap ya que estoy buscando el modo de hacer los digitos a todo lo que da la pantalla en alto y ancho posible? Gracias, saludos

  3. #include

    LCD5110 myGLCD(8, 9, 10, 11, 12);

    extern unsigned char SmallFont[];

    int contrast = 63;

    long distancia;
    long tiempo;
    void setup() {
    Serial.begin(9600);
    myGLCD.InitLCD(contrast);
    pinMode(7, OUTPUT);
    pinMode(6, INPUT);
    }

    void loop() {
    digitalWrite(7, LOW);
    delayMicroseconds(5);
    digitalWrite(7, HIGH);
    delayMicroseconds(10);
    tiempo = pulseIn(6, HIGH);
    distancia = int(0.017 * tiempo);

    myGLCD.setFont(SmallFont);
    Serial.println(«Distancia:»);
    myGLCD.print(«Distancia:», 5, 5);
    Serial.println(distancia); —-> mi problema
    myGLCD.update();

    Serial.println(«cm»);
    myGLCD.print(«cm», 5, 15);

    myGLCD.update();
    delay(5000);

    }

    // Serial.println(distancia); —-> mi problema

    quisiera que me ayuden, mi problema es que tengo una pantalla nokia lcd5110 y quiero que me muestre la distancia en mi pantalla lo cual se me hace un poco dificil lograrlo, espero que me puedas ayudar estoy configurando un sensor de aproximacion con pantalla lcd 5110, te he puesto mi configuracion apoyame por favor.
    gracias

    1. Hola que tal Cesar, ya para modificar códigos especiales usualmente cobramos, si te interesa una cotización puedes mandar un correo a hector.torres@hetpro.com.mx si tienes preguntas especificas con gusto te atendemos por este medio, también quizás alguien más tenga una respuesta por aquí :). Saludos.

  4. Hola, muy bueno, me ayudo a entender muchas cosas, lo que si necesitaría saber si esas son las únicas funciones o tiene mas, porque necesito mostrar el nivel de un tanque de agua y no se como graficarlo. Desde ya muchas gracias ñ.

    1. Hola, gracias por tus comentarios, de momento no sabemos si se podra realizar mas funciones con esta LCD pero puedes utilizar las pantallas nextion que son ideales para esto

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *