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
}

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.