Arduino.cl – Compra tu Arduino en Línea

Display 16×2 paralelo

Cuando realizamos un proyecto, muchas veces necesitamos visualizar la información para los usuarios. Una forma de hacerlo es con pantallas LCD, en este caso con un display de 16×2, cuyo nombre hace referencia a la cantidad de caracteres en la fila (16) y la cantidad de filas (2), en resumen, de 16 columnas y 2 filas.

Para empezar, debemos contar con un potenciómetro, el display LCD de 16×2, tener la librería de la pantalla <LiquidCrystal.h> incluida en el IDE y cables para conexionado.

Para el conexionado utilizaremos 12 de los 16 pines, ya que utilizaremos el display como modo 4 bit para ahorrar cableado y no usar todos los pines del Arduino. Es posible utilizar todos los pines y tener un conexionado de 8 bit, logrando una velocidad de respuesta algo más rápida, sin embargo, gracias a la biblioteca obtenemos casi el mismo resultado solo con los 4 bit.

Antes de continuar, debemos aclarar un punto. Sin nos fijamos, la mayoría de los componentes que utiliza Arduino tiene, por lo general, 3 cables de los cuales 2 son para alimentación y 1 para comunicación. Para los display es distinto porque utiliza comunicación paralela, donde se transmiten simultáneamente por las líneas los bits de información. Esta comunicación requiere más cableado (tantas líneas como bit sea necesario transmitir) y es recomendada para usarla a corta distancia, ojalá dentro de la carcasa de algún prototipo o diseño.

Como se mencionó, nuestro display tiene 16 pines de los que usaremos 12, los cuales describiremos a continuación.

  • VSS, conexión gnd para alimentación
  • VDD o VCC, conexión 5v para alimentación
  • VEE o VO, se utiliza para ajustar el contraste de lo que se visualiza. Aquí conectaremos un potenciómetro donde el extremo mínimo mostrara solo la pantalla y el extremo máximo mostrara el relleno completo del carácter, debemos ajustarlo al punto que más nos acomode
  • RS, registrar selección, RS 0 el dato es de control/instrucción, cuando es 1 el dato es un registro de datos o un carácter
  • RW, Pin de escritura (0) o lectura (1), permite escribir un dato en la pantalla o leer un dato desde la pantalla, para este caso lo usaremos para escribir, por ende, estará permanentemente conectado a gnd.
  • E o EN, enable, envía (o recibe) los datos cuando está en 1, si está en 0 deshabilita la recepción de datos
  • D0 a D7, son los pines de datos de los que usaremos solo desde D4 a D7
  • A o Led+, Ánodo, pin para 5v de luz de fondo. Es posible conectar un potenciómetro y regular la intensidad de la luz de fondo, para este caso conectaremos a 5v.
  • K o Led-, Cátodo, pin para gnd de luz de fondo.

Específicamente para usar esta pantalla utilizaremos los siguientes pines.

  • VSS conexión a gnd
  • VCC conexión a 5v
  • VEE o VO conexión a potenciómetro
  • RS conexión a pin 12
  • RW conexión a gnd
  • E o EN conexión a pin 11
  • Pin D0 a D3 no serán usados
  • Pin D4 (display) conexión a pin 5 (arduino)
  • Pin D5 conexión a pin 4
  • Pin D6 conexión a pin 3
  • Pin D7 conexión a pin 2
  • A o Led+ conexión a 5v (con resistencia de 250 Ω)
  • K o Led- conexión a gnd

Ya tenemos el conexionado, como pueden ver son 12 cables para la pantalla, más los necesarios para la distribución de la alimentación a los distintos componentes. Entonces ahora falta el programa para enviar datos al display.

#include <LiquidCrystal.h>                  //librería para display LCD

LiquidCrystal lcd(12, 11, 4, 5, 6, 7);      //pines para conexionado de RS, E, D4, D5, D6, D7 respectivamente

 

void setup() {

  lcd.begin(16, 2);                          //inicio de LCD a usar, en este caso 16×2.

 }

 

void loop() {

 /*

  La cantidad de caracteres por fila son 16 y van de las posiciones 0 a 15

  La cantidad de columnas son 2 y se especifican con 0 o 1

  */

 

  lcd.clear();                                       //deja la pantalla sin caracteres

  lcd.setCursor(4, 0);                      //fija cursor para escritura, este caso en posición 5 de la primera fila

  lcd.print(“LCD 16×2”);                 //escritura en LCD, las palabras se escriben con comillas “palabras”

  lcd.setCursor(3, 1);                      //fija cursor para escritura, este caso en posición 4 de la segunda fila

  lcd.print(“Valor: “);                     //escritura en LCD, cada letra ocupa una posición

  lcd.setCursor(10, 1);                     //fija cursor para escritura, este caso en posición 11 de segunda fila

  lcd.print(analogRead(A0));          //escritura en LCD del valor analógico leído (como ejemplo)

  delay(500);                                       //delay para mejor respuesta

}

Como vemos en el programa, declaramos la librería para el display y definimos los pines, ellos pueden variar, pero siempre tendrán el mismo orden, RS, E, D4, D5, D6, D7 para el programa, si los cambias debes tener cuidado en el conexionado. Por otro lado, siempre debemos fijar la posición en la que escribiremos y realizar la escritura cuidando los 16 espacios disponibles. Cuando son display más grandes, como el de 20×4 solo cambia el comando de lcd.begin(20,4) y la definición de posición de la matriz en lcd.setCursor(); Las siguientes imágenes muestran la modificación del potenciómetro a un 100%, 75%, 50% y 25%, con esto, dependiendo de la luz que reciba deberán ajustarlo para una mejor visualización.

Entre las fallas típicas encontraremos que nada este impreso en pantalla, caracteres extraños o pantalla apagada. Cuando alguno de los cables, en nuestro caso pines pines D4 a D7, queda en una posición que no es la correcta verán caracteres extraños moviéndose en la pantalla, deben respetar el orden de los pines usados en el setup para el cableado. La no impresión de caracteres podría ser por un error en el cableado al pin E o EN, si es que se respetó la definición de pines en el software. Cuando la pantalla esta apagada y vemos texto posiblemente el error este en el cableado del ánodo y cátodo.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Te informaremos cuando el producto esté en stock nuevamente. Por favor, deje su dirección de correo electrónico válida.

No fields found, please go to settings & save/reset fields