Pantalla LCD Nokia 5110 con Arduino

En esta guía os voy a enseñar a conectar una pantalla LCD Nokia 5110 en nuestro Arduino para poder imprimir textos y números en ella.

Entre las ventajas están el consumo, ya que dicha pantalla consumirá aproximadamente 0.25ma con la luz apagada (15ma con la luz encendida). Esto la hace ideal para proyectos con baterías en las que nos interese que dure lo más posible.

Además de la ventaja del consumo también tiene la ventaja de poder mostrar pequeños gráficos e incluye luz de fondo.

Si deseas ver más guías sobre esta pantalla, no dudes en pasarte por la parte 2 de mi blog:
Pantalla LCD Nokia 5110, texto con Arduino (Parte 2)
Pantalla LCD Nokia 5110, gráficos con Arduino (Parte 3)

Índice

Materiales necesarios

El listado de materiales necesarios para poder montar el circuito utilizando un circuito Arduino con los componentes básicos, son los siguientes:

  • Protoboard
  • Jumpers o cables de conexión
  • Un chip ATMega328p
  • Un cristal de cuarzo de 16Mhz
  • Dos condensadores cerámicos de 22pf
  • Una resistencia de 1k
  • Cinco resistencias de 10k
  • Pantalla Nokia 5110

Por supuesto, esto también se puede montar con un Arduino Uno, nano… para lo cual sólo necesitarías:

  • Protoboard
  • Jumpers o cables de conexión
  • Arduino
  • Pantalla Nokia 5110
  • Cinco resistencias de 10k

NOTA: Si tu Arduino funciona con 3.3v o tu pantalla acepta 5v, no necesitas las cinco resistencias de 10k. Se usan para adaptar el voltaje de tu Arduino, el cual es de 5v, a los 3.3v con los que es compatible la pantalla.

Datos técnicos

Esta pantalla dispone de los siguientes datos técnicos:

Tecnología de pantallaLCD de matriz de puntos
Controladora de pantallaPhilips PCD8544
Interfaz MCUSPI
Tamaño de pantalla1,5 pulgadas
Resolución84×48 pixeles
Voltaje de funcionamiento2.7v – 3.3v (algunas aceptan 5v)
Consumo de corriente50mA máximo
Ángulo de visión180º
Luz de fondoRojo, Azul, Verde o blanca

Pinout

Las pantallas LCD Nokia 5110 son todas iguales, pero dependiendo del modelo puede variar el orden de los pines. Aquí os pondré el que más veces he visto y el que coincide con mi pantalla, pero os recomiendo comprobar que coincide con la vuestra.

Al igual que el orden de los pines puede cambiar entre pantallas, el voltaje del pin BL (BackLigth) puede variar también. Algunas pantallas requieren 3.3v y por lo tanto hay que añadir una resistencia de 330Ohm si la conectamos a 5v. Otras directamente aceptan 5v, y otras como por ejemplo la mía, utilizan GND para activar la luz. Como recomendación y por seguridad, aconsejo conectar estas pantallas siempre a 3.3v, o añadir una resistencia para limitar la corriente. Así siempre te asegurarás de que funciona y no se quema.

Conexión con Arduino

Esta pantalla se puede controlar con Arduino de dos formas:

  • Hardware
  • Software

La diferencia entre ambas es que las actualizaciones por Hardware soon más rápidas, pero puede dar lugar a incompatibilidades si usamos otros dispositivos SPI. Las actualizaciones por software sin embargo tienen el defecto de ser un poco más lentas, pero a cambio tienen más flexibilidad en la conexión de los pines.

Elijas uno y otro, recuerda configurarlo en la inicialización del módulo, o sino no funcionará.

Hardware

Si no usas más dispositivos SPI quizá es tu mejor opción, ya que te permite actualizar los datos de forma más rápida. Las conexiones para utilizar este modo serían las siguientes:

Software

Por otro lado disponemos de la conexión SPI por software, la cual nos permite conectar los pines como mejor nos convenga. La librería nos insta a utilizar las conexiones de la siguiente manera:

Instalación de la librería

Por muy bien que hayamos conectado nuestro Arduino, sino tenemos la librería para poder usarla, no nos va a servir de mucho. Para ello hay distintas librerías, pero yo en concreto utilizo la de Adafruit, que siempre me ha dado un buen resultado y tiene bastantes opciones.

Para proceder a instalar la librería de Adafruit, seguiremos los siguientes pasos:

Vamos a la gestión de bibliotecas

Una vez ahí, buscaremos la librería por 5110 e instalamos la de Adafruit, que suele salir la primera

En el caso de que pregunte si instalar las dependencias tendríamos que darle a si, ya que así nos aseguraremos de que instale todo lo necesario.

Es muy probable que tras instalar la librería de arriba no se haya instalado una dependencia de esta, la cual se llama Adafruit GFX Library. Para instalarla y que no falle la pantalla tendremos que buscarla e instalarla, por lo que seguiremos los pasos seguidos anteriormente: buscar Adafruit GFX y darle a instalar.

Con esto ya tendríamos la librería instalada y lista para usarla en nuestros proyectos.

Código: mostrar texto

Una vez instaladas las librerías vamos a proceder con lo básico que será mostrar texto en la pantalla LCD nokia 5110 con Arduino. Para ello podemos usar funciones parecidas a las usadas para depurar nuestras aplicaciones.

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// Software SPI (slower updates, more flexible pin options):
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

// Hardware SPI (faster, but must use certain hardware pins):
// SCK is LCD serial clock (SCLK) - this is pin 13 on Arduino Uno
// MOSI is LCD DIN - this is pin 11 on an Arduino Uno
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
// Adafruit_PCD8544 display = Adafruit_PCD8544(5, 4, 3);
// Note with hardware SPI MISO and SS pins aren't used but will still be read
// and written to during SPI transfer.  Be careful sharing these pins!

void setup()   {
  // Inicializamos la pantalla
  display.begin();

  // Indicamos el contraste que queremos para una mejor visión
  display.setContrast(57);

  // Limpiamos el buffer buffer.
  display.clearDisplay();

  // Mostramos el text
  display.setTextSize(1); // Tamaño de texto 1
  display.setTextColor(BLACK); // Color negro (por defecto, por lo que no hace falta)
  display.setCursor(0,0); // Nos posicionamos en la coordenada 0,0
  display.println("Hola Mundo!"); // Escribimos Hola Mundo!
  display.display(); // Hacemos que la pantalla se refresque
}

void loop() {}

Como podéis ver en el código, se usa igual que la función Serial. Podemos usar display.print para escribir y que la posición del cursor se quede al final de lo escrito, o podemos usar como en el ejemplo display.println para que pase a la siguiente línea.

También disponemos de la función display.display(), la cual es muy importante. Esta función se encarga de refrescar la pantalla con los datos que hayamos escrito en el buffer. Podríamos escribir por toda la pantalla y no se mostraría nada hasta ejecutar dicha función.

Y hasta aquí la guía básica de cómo utilizar nuestra pantalla LCD Nokia 5110 en Arduino. Espero que os haya gustado y que os sirva, y como siempre, los comentarios son bienvenidos.

Un saludo!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.