Quantcast
Channel: Luis Llamas
Viewing all articles
Browse latest Browse all 1123

Conectar Arduino a un display LCD HITACHI HD44780

$
0
0
arduino-lcd-hitachi-hd44780

¿Qué es un LCD HITACHI HD44780?

Las pantallas LCD (Liquid Cristal Display) son una de las formas más sencillas y económicas de dotar de un display a un autómata.

El Hitachi HD44780 es uno de los controladores de LCDs más ampliamente extendidos por su sencillez y bajo precio.

El HD44780 está diseñado para controlar LCDs monocromos de hasta 80 caracteres alfanuméricos y símbolos. También dispone de una pequeña memoria RAM para configurar nuestros propios caracteres o dibujos.

Las pantallas LCD con el controlador HD44770 se fabrican en distintos tamaños, siendo comunes 16×02 (2 líneas de 16 caracteres), 20×02, 20×04 y 40×02.

Las pantallas LCD disponen de retroiluminación trasera en azul o en verde. El contraste puede ser variado conectando un potenciómetro al LCD.

Conectar directamente un LCD a Arduino requiere una gran cantidad de pines. Suele ser aconsejable emplear un adaptador I2C.

Precio

Los LCD con controlador HD44770 son componentes barato. Su precio varía en función del tamaño y el número de caracteres.

Podemos encontrar el tamaño 16×02 (LCD1602), muy habitual, por 1.4€, en vendedores internacionales de Ebay o AliExpress. El LCD de 20×4 (LCD2004) es, lógicamente, algo más caro. Podemos encontrarlo por 3.4€.

arduino-lcd-hitachi-hd44780-componente

Esquema eléctrico

Como hemos adelantado, conectar un Arduino a una pantalla LCD HD44770 sin usar un adaptador I2C requiere una gran cantidad de cables. El esquema de conexión visto desde el LCD a los pines de Arduino es el siguiente.

arduino-lcd-hitachi-hd44780-esquema

Mientras que la conexión desde el lado de Arduino quedaría así.

arduino-lcd-hitachi-hd44780-conexion

Si quisiéramos controlar el contraste de la pantalla, añadiríamos un potenciómetro para regular la tensión en V0.

Ejemplos de código

El IDE de Arduino incorpora de serie la librería LiquidCrystal, para controlar pantallas LCD HD44770 de forma sencilla.

Por ejemplo, el siguiente sketch muestra el uso de las funciones de la librería para mostrar los textos “Linea 1” y “Linea 2” en una pantalla de 16×02.

/* Conexión
PIN2 - LCD4 (RS)
PIN3 - LCD5 (R/W)
PIN4 - LCD6 (E)

PIN8 - LCD11 (D4)
PIN9 - LCD12 (D5)
PIN10 - LCD13 (D6)
PIN11 - LCD14 (D7)
*/

#include 			

LiquidCrystal lcd(2, 3, 4, 8, 9, 10, 11); //(RS,RW, E, D4,D5, D6, D7)

void setup()
{
	lcd.begin(16, 2);	// Inicia un LCD 16x02 (columnas,fila)
	lcd.setCursor(0, 0);	// Pone el cursor en las coordenadas (0,0)
	lcd.print("Linea 1");	// Escribe el LCD
	lcd.setCursor(0, 1);	// Ponemos el cursor en la segunda Fila
	lcd.print("Linea 2");   // Escribe el LCD
}

void loop()
{
	//Apagar cursor
	lcd.noCursor();
	delay(500);
	
	//Apagar encender cursor
	lcd.cursor();
	delay(500);
}

El siguiente sketch usa las funciones scroll para desplazar un texto horizontalmente en la pantalla.

/* Conexión
PIN2 - LCD4 (RS)
PIN3 - LCD5 (R/W)
PIN4 - LCD6 (E)

PIN8 - LCD11 (D4)
PIN9 - LCD12 (D5)
PIN10 - LCD13 (D6)
PIN11 - LCD14 (D7)
*/	
#include 

LiquidCrystal lcd(2, 3, 4, 8, 9, 10, 11); //(RS,RW, E, D4,D5, D6, D7)

void setup() {
  lcd.begin(16, 2);
  
  lcd.print("¡Hola mundo!");
  delay(1000);
}

void loop() {
  
  //mover 13 posiciones (longitud del texto) a la izquierda
  //para sacar el texto de la pantalla por la izquierda
  for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
    lcd.scrollDisplayLeft();
    delay(150);
  }

  //mover 29 posiciones (longitud del texto + ancho del display) a la derecha
  //para sacar el texto de la pantalla por la derecha
  for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
    lcd.scrollDisplayRight();
    delay(150);
  }

  //mover 16 posiciones (29-13) a la izquierda
  //para devolver el texto a la posición inicial
  for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    lcd.scrollDisplayLeft();
    delay(150);
  }
  
  delay(1000);
}

La librería LiquidCrystal contiene más ejemplos sobre su uso. Resulta aconsejable examinar su código, en general son sencillos de entender.

Si te ha gustado esta entrada y quieres leer más puedes consultar el resto de tutoriales de Arduino


Viewing all articles
Browse latest Browse all 1123

Trending Articles