sábado, 31 de octubre de 2015

Tutorial: Aprender a usar la pantalla LCD del Nokia 5110 con Arduino


Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a rehacer un tutorial antiguo, y vamos a mejorarlo para que los usuarios puedan usar la pantalla LCD de un Nokia 5110, de una forma muy sencilla a través de librerías.


INTRODUCCIÓN

Muchos conocemos las antiguas pantallas LCD del Nokia 5110, no tienen mucha definición, pero para proyectos que requieran mostrar información al usuario son idóneas por su calidad y precio.

Para este tutorial es importante que sepáis incluir librerias de Arduino en C++, y si no sabes como hacerlo, te añado el link al tutorial, que es realmente sencillo.

La pantalla cuenta con una revolución de 84x84 pixeles, cada carácter ocupa apoximadamente 5x7 pixeles. Lo que te permite unos 14 caracteres por línea y en altura entrarían aproximadamente 6 lineas de caracteres.

Las dimensiones de esta pantalla son 4.5 cm x 4.5 cm x 1.3 cm y un peso de 41 g.
Esta trabaja a 3.3v, así que mucho cuidado con eso y para los leds de la pantalla habrá que usar una resistencia de 1 Kohms, +/-5% (se explica más detenidamente en el montaje).
Y su precio ronda los 4'5€.

Por último, os adjunto el Data Sheet de la pantalla (fabricada por Philips)

Para este tutorial, se requerirá
Dificultad:

           Tiempo:  25 minutos (montarlo y programarlo)


MATERIAL NECESARIO

A continuación os describo el material necesario para realizar el tutorial y donde conseguirlo:

Imagen
Nombre producto
Donde comprarlo
LCD Nokia 5110
Arduino Micro
Conectores universales
Resistencia 1 Kohms, +/-5%
Cualquier tienda de electrónica


MONTAJE

Bien una vez que disponemos de todos los componentes, vamos a ponernos manos a la obra. Para ello os dejo a continuación un esquemático de como debéis interconectar los diferentes componentes para que esto funcione.


Tenemos 8 pines que nacen de nuestro LCD, de los 8 el que hay que tener cuidado es el que pone LIGHT o LED (según el fabricante). A este pin habrá que conectarle una resistencia de 1 Kohms, +/-5% (Código de color: Marrón-Negro-Rojo-Dorado).

Otro punto a tener en cuenta es que según el fabricante, cambia un poco el orden de los pines, así que según que placa os encontrareis desordenado esto. Si veis que no os cuadra con el mapeo de pines que uso yo, no os preocupeis, simplemente, poned los pines del 2 al 7 y el tenga el del led le ponéis la resistencia y luego en la parte de programación os digo como solucionarlo.

Mapeo de Pines:
Número de entrada digital 2 3 4 5 6 VCC 7 GND
Nombre pin LCD RST CE DC DIN CLK VCC (3,3v) LIGHT GND


PROGRAMACIÓN

LIBRERÍA: Bitbucket - lcd-nokia-5110
LIBRERÍA: DropBox - lcd-nokia-5110

Una vez montado todo correctamente (verificar las conexiones que eso trae mucho de cabeza). Conectamos nuestro Arduino a el ordenador y añadimos el código que os pongo a continuación:

#include <LCD.h>

LCD lcd;

void setup()
{

}

void loop()
{
     lcd.drawBox();  // Dibujar marcos
     lcd.printText(15,1,"Lunegate");
     lcd.scroll(1,3,"Ejemplo de los tutoriales de www.lunegate.net");
     lcd.led(0);  // LCDS encendidos
     delay(500);
}


Si los pines os han coincidido con los mios, simplemente instanciáis la clase LCD y ya esta.

Esta clase contiene otras 3 sobrecargas de constructor.
1) LCD(int PIN_RESET, int PIN_SCE, int PIN_DC, int PIN_SDIN, int PIN_SCLK, int PIN_LCD);
2) LCD(byte contrast);
3) LCD(byte contrast, int PIN_RESET, int PIN_SCE, int PIN_DC, int PIN_SDIN, int PIN_SCLK, int PIN_LCD);
La primera sobrecarga es para el caso en el que no os coincidan los pines que están marcados por defecto en la librería. Simplemente marcáis en el orden descrito arriba el pin que deseáis.
La segunda sobrecarga es para teniendo los mismos pines, si queréis cambiar el contraste de la pantalla. Esto se define en bytes. Actualmente la que he puesto por defecto es:0xA7 . Si queréis que sea más oscuro pones 0xA8..0xA9 ...0xB1...0xB8...
La última sobrecarga es para usar vuestros propios pines y controlar el contraste.

Código de las opciones de los constructores:
#include <LCD.h>

LCD lcd(1,4,5,7,8,12);
LCD lcd(0xB8);
LCD lcd(0xB8,1,4,5,7,8,12);

void setup()
...


Por último para finalizar la parte de programación, os dejo los métodos que contiene la librería:
        /**
         * x - Rango: 0 a 5
         * y - Rango: 0 a 75
         */
        void printText(int x, int y, char *characters);
        void scroll(int x, int y,String message);
        /**
         * Light =   Led display
         * light = 0 (Mucha luz)
         * light = 10000 (Apagado)
         */
        void led(int light); 
        void drawBox();

PUNTUACIÓN

Calidad Componentes
4,5
Montaje
4,5
Precio
4'0
Características
3'5
Puntuación Global
4


Se echa de menos un poco mas de resolución y los leds de la pantalla no iluminan demasiado (sobretodo por que son azules)



Tags: , , ,

Ude

Eduardo Parada Pardo

Soy desarrollador e investigador en robótica, me gusta aprender nuevas tecnologías y todo lo relacionado con el mundo de la robótica. Si te gusta este blog, no dudes en preguntar cualquier duda.

0 comentarios:

 

Productos y tecnologias usadas en este blog:

  • Copyright © LuneGate™ is a registered trademark.
    Designed by Templateism. Hosted on Blogger Platform.