Usando la pantalla Nokia 5110 con Arduino

Una función útil en nuestros proyectos es la de mostrar los datos necesarios a las personas del exterior. La pantalla Nokia 5110 te permite hacer esto teniendo un espacio suficiente para mostrar información.

Es un módulo con tecnología de los años 90 pero su usabilidad, precio y versatilidad han ayudado a que se mantenga vigente hasta la actualidad en los proyectos con microcontroladores.

Aspectos técnicos

La pantalla es de baja resolución y muestra la información mediante pixeles individuales representados por bits para activarse o desactivarse. Está organizada de la siguiente forma: 84 columnas y 6 bloques, cada bloque tiene 8 filas. Las columnas, bloques y filas se cuentan iniciando desde el 0. Por ello al seleccionarlas las columnas, por ejemplo, tendríamos que elegir desde la columna 0 hasta la 83.

El módulo que se encarga de controlar la pantalla es un PCD8544 y se comunica con los microcontroladores con le protocolo SPI.

TecnologíaVisualizador de matriz (Dot Matrix LCD)
ProtocoloSPI
Tamaño de pantalla1.5 pulgadas
Resolución84 x 48 pixeles
Voltaje2.2V – 3.3V
Corriente50mA
Ángulo de visión180º

Algunos modelos toleran los 5V.

Conexión

Vamos a conectar la pantalla Nokia 5110 a Arduino UNO siguiendo la gráfica. También puede guiarte de la tabla que esta abajo.

Nokia 5110Arduino
RST3
CE4
DC5
DIN6
CLK7
VCC3.3V
BL (luces)3.3V
GNDGND

Programación

Programar pixel por pixel no es imposible, pero si puede llevar bastante tiempo. Lo bueno es que han surgido diferentes librerías para esta pantalla. Nosotros utilizaremos la librerías desarrollada por Adafruit.

Podemos instalar la librería desde nuestro gestor de librerías en el editor de Arduino.

Al momento de instalarla verás un recuadro pidiendo permiso para instalar una segunda librería que también es necesaria.

La librería de Adafruit trae un código de ejemplo en el que expone las funciones disponibles como mostrar textos, números e incluso gráficos estáticos y en movimiento. En este tutorial vamos a utilizar las funciones referentes a textos y números.

Exploremos las funciones y ejemplos antes de entrar a las prácticas.

Imprimir texto y números

Vamos a mostrar texto en nuestra pantalla. Para este ejemplo imprimiremos el orden de cada fila a la vez que usamos las distintas funciones de la librería.

Este es el código completo:

/*
 * Ejemplo para imprimir datos en una pantalla Nokia 5110
 * Henry Mera
 * https://todomaker.com
*/

//Incluir librerías
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// Conexión SPI:
// 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)

//Crear objeto "display" y asignar los pines
//que se usarán para la comunicación con la pantalla
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

int fila3 = 3;

void setup() {
  Serial.begin(115200); //Iniciar Serial

  display.begin(); //Iniciar la pantalla
  display.setContrast(0); //Contraste de la pantalla
  display.clearDisplay(); //Limpiar el contenido que esté en la pantalla


  display.setCursor(0, 0); //Emepezar desde el inicio de los segmentos
  display.setTextSize(1); //Ajustar tamaños de texto

  //Imprimir en pantalla
  display.println("Fila 0");
  display.setTextColor(WHITE, BLACK); //Cambiar color
  display.println("Fila 1"); //Imprimir texto
  display.setTextColor(BLACK, WHITE);
  display.print("Fila ");
  display.println(2); //Imprimir número
  display.print("Fila "); display.println(fila3); //Imprimir una variable
  display.println("Fila 4");
  display.println("Fila 5");
  display.display();

}

void loop() {
}

Así funciona el código. Primero añadimos las librerías que usaremos. En esta caso es la de SPI y las otras dos de Adafruit necesarias para usar la pantalla.

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

Creamos un objeto llamado “display” para darle las instrucciones a nuestra pantalla. Añadiremos los pines que usaremos para SPI como un parámetro al crear el objeto.

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

Estas instrucciones iniciarán la pantalla, ajustarán el contraste y limpiaremos la pantalla para que esté lista al imprimir nuevos datos.

  display.begin();
  display.setContrast(0);
  display.clearDisplay();

Con esa instrucción indicamos desde que sector de la pantalla se empezarán a imprimir el texto. Se maneja como una coordenada.

display.setCursor(0, 0);

El tamaño de un caracter en escala “1” es de 5×7 píxeles. Manteniendo esta relación al poner el texto en tamaño “2” los caracteres serían del tamaño de 10×14 píxeles.

display.setTextSize(1);

Para mostrar información en la pantalla usaremos el nombre que le asignamos como objeto seguido del comando print y println para hacerlo con un salto de línea al final, de esta forma lo siguiente que imprimas se hará en una línea debajo.

Imprimir cadena de caracteres usando las comillas.

display.println("Fila 0");

Imprimir un valor númerico.

  display.print("Fila ");
  display.println(2);

Podemos imprimir el valor de una variable somo llamándola por el nombre.

display.print("Fila "); display.println(fila3);

Con esta función podemos invertir los colores. Se agrega como parámetros el color del texto y después el color del fondo. Por defecto tenemos las letras negras y el fondo blanco.

display.setTextColor(WHITE, BLACK);

Imprimir datos de entrada

También podemos usar la pantalla Nokia 5110 para mostrar datos que se hayan ingresado por el monitor serial.

Crearemos una variable en la que guardaremos una cadena de texto, en esta caso la usaremos para guardar un nombre. Mostraremos el nombre en la pantalla después de escribirlo en nuestro monitor serial.

/* 
 *  Ejemplo para imprimir datos de entrada el monitor serial
 *  en una pantalla Nokia 5110
 *  Henry Mera
 *  https://todoMaker.com 
*/

//Incluir librerías
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

//Crear objeto "display" y asignar los pines
//que se usarán para la comunicación con la pantalla
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

//Variable a la que llegarán el valor
String nombre;

void setup() {
  
  Serial.begin(115200); //Iniciar Serial
  
  display.begin(); //Iniciar la pantalla
  display.setContrast(0); //Contraste de la pantalla
  display.clearDisplay(); //Limpiar el contenido que esté en la pantalla

  display.setCursor(0, 0); //Emepzar desde el inicio de los segmentos
  display.setTextSize(1); //Ajustar tamaños de texto

  display.println("Escribir nombre");
  display.display();
  
  //Entrada de datos
  while (Serial.available() == 0);
  nombre = Serial.readString();
  
  //Imprimir en pantalla
  display.println("Tu nombre es: ");
  display.println(nombre);
  display.display();
}
void loop() {

}

Con esto haremos que el programa esté atento cuando haya un valor recibido por el monitor serial. Cuando se haya detectado escribirá se valor recibido en la variable nombre.

while (Serial.available() == 0);
nombre = Serial.readString();

Imprimiremos la variable del nombre acompañada de un texto.

display.println("Tu nombre es: ");
display.println(nombre);
display.display();

Conclusiones

La pantalla Nokia 5110 es utilizada en la actualidad por su precio accesible y fácil uso gracias las librerías creadas por la comunidad. Es una forma rápida para mostrar los datos de un programa al exterior.

Te invitamos a tomar el curso de Introducción al ESP32: Introducción al ESP32 | TodoMaker’s School

Previous Post
Next Post