Cómo utilizar una pantalla LCD con Arduino

Hacer funcionar una pantalla LCD con Arduino es mucho más fácil que con cualquier PIC, sólo se requiere hacer las conexiones necesarias, que ya vienen especificadas en los ejemplos de la librería en Arduino.

Para este tutorial vamos a utilizar un display LCD de 2 filas por 16 columnas.

 

Por lo general, la configuración de los pines de estas pantallas es como la siguiente:

  • Pin 1: VSS o GND
  • Pin 2: VDD (alimentación), trabaja con 5V
  • Pin 3: Contraste, se conecta a un potenciómetro
  • Pin 4: Selección de registro
  • Pin 5: Lectura/escritura
  • Pin 6: Enable (habilita o deshabilita la pantalla)
  • Pin 7 al 14: Envío de información
  • Pin 15: Ánodo del led de iluminación (+5V)
  • Pin 16: Cátodo del led de iluminación (GND)

 

En este caso se utiliza una placa Arduino Mega, pero esta configuración funciona para cualquier otro tipo de Arduino. En resumen, los componentes a utilizar son:

  • Placa Arduino
  • Pantalla LCD de 2 X 16
  • Potenciómetro de 10 K
  • Cable o alambre estañado
  • Protoboard

Ya que conectamos el LCD al Arduino, nos vamos al código, pero antes, si olvidaste cómo conectar el potenciómetro, el pin izquierdo se conecta a tierra, el derecho a 5V y el de en medio al pin 3 del LCD.

El código es el siguiente:

#include <LiquidCrystal.h>

// Se inicializa la librería con los pines a utilizar
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
 // Se configura el LCD con el número de filas y columnas:
 lcd.begin(16, 2);
 // Se imprime un mensaje.
 lcd.print("masterhacks.net");
}

void loop() {
 //Se configura el cursor en la columna 0, línea 1
 // (Nota: la columna 0 es la 1 en realidad, porque se inicia contando desde cero):
 lcd.setCursor(0, 1);
 // Se imprime el número de segundos transcurridos desde el último reset:
 lcd.print(millis() / 1000);
}

Puedes abrir el código directamente en Arduino, yendo a Archivo, Ejemplos, LiquidCrystal, HelloWorld. 

El resultado es el siguiente:

Un pequeño cambio con el contador de los segundos sería utilizar un forma de reloj, con separador de horas y minutos, para esto modificamos la parte del contador de los segundos por lo siguiente:

void loop() {
 lcd.setCursor(6, 1); // Se inicia en la línea 1, posición 6
 String r = reloj() ;
 lcd.print(r) ;
}

String reloj()
 {
 int n = millis() / 1000 ;  // Se convierte a segundos
 int segundos = n % 60 ;
 int minutos = n / 60 ;

String S = String(minutos) + ":" + String(segundos);
 return (S);
 }

Aquí hay que prestar atención a la última parte, ya que se hace una conversión de int a string, con el fin de convertir los números en texto para poder mezclarlos con los dos puntos (:) del reloj.

El resultado es el siguiente:

Efecto de texto en movimiento

Para dar un efecto de texto en movimiento, se puede utilizar el siguiente código:

#include <LiquidCrystal.h> 


#define COLS 16 // Columnas del LCD
#define ROWS 2 // Filas del LCD
#define VELOCIDAD 400 // Velocidad a la que se mueve el texto


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


String txt_fila = "masterhacks.net";
 
void setup() {
 
 Serial.begin(9600);


lcd.begin(COLS, ROWS);
}
 
void loop() {
 
 // Tamaño del texto
 int txt=txt_fila.length();
 
 // Mostrar el texto por la izquierda
 for(int i=txt; i>0 ; i--)
 {
 String texto = txt_fila.substring(i-1);
 
 // Se limpia la pantalla
 lcd.clear();
 
 //Situamos el cursor
 lcd.setCursor(0, 0);
 
 // Escribimos el texto
 lcd.print(texto);
 
 // Esperamos
 delay(VELOCIDAD);
 }
 
 // Mostrar el texto por la derecha
 for(int i=1; i<=16;i++)
 {
 
 lcd.clear();
 
 
 lcd.setCursor(i, 0);
 
 
 lcd.print(txt_fila);
 
 
 delay(VELOCIDAD);
 }
 
 // Desplazar el texto por la derecha
 for(int i=16;i>=1;i--)
 {
 
 lcd.clear();
 
 
 lcd.setCursor(i, 1);
 
 
 lcd.print(txt_fila);
 
 
 delay(VELOCIDAD);
 }
 
 
 for(int i=1; i<=txt ; i++)
 {
 String texto = txt_fila.substring(i-1);
 
 
 lcd.clear();
 
 
 lcd.setCursor(0, 1);
 
 
 lcd.print(texto);
 
 
 delay(VELOCIDAD);
 }
}

Aquí básicamente se especifica la dirección de movimiento del texto que se va a mostrar en la pantalla, mostrando cada caracter a la velocidad declarada en la variable con el mismo nombre.

El resultado de este efecto se puede ver en el siguiente video:

Gracias por apoyar el libre conocimiento con tu donación!
Bitcoin: bc1q4sw9260twfcxatj8mjp7358cyvrf8whzlelyhj
Ethereum: 0xFb93D2a3c9d1A0b83EE629c2dE1725BCa192e581
Litecoin: LbFduJmHvQXcpCnwfUT7aJ4DYoWSL3iQw8
Dogecoin: D7QQVqNR5rk215A4zd2gyzV9P2bLQtZHFV
Transferencia bancaria en México:
Cuenta CLABE: 646180224401848086 Nombre: Masterhacks LATAM Banco: STP

Unete a nuestros grupos:
WhatsApp: https://chat.whatsapp.com/HcazyklpyeU4X3BF657KFQ
Telegram: https://t.me/masterhacks_net
Canal de WhatsApp https://whatsapp.com/channel/0029VaBBLCn5vKAH9NOWCl3K

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *