LCD

De ArduWiki
Revisión del 12:29 4 jul 2019 de Kike GL (Discusión | contribuciones) (Referencias externas)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Descripción

La librería LiquidCrystal de Adafruid (AGO-2017), permite a un Arduino controlar un LCD (HD44780 y compatibles) via 4 u 8 bits de datos mas ademas de RS y Enable. Opcionalmente puedes usar la linea RW.

Mucho mas eficiente es la libreria LiquidCrystal_I2C de Frank de Brabander (NOV-2015), que permite a un Arduino controlar un LCD via el bus I2C, pero tendras que usar un adaptador.

Placas aplicables

Todas

Sintaxis

#include <LiquidCrystal.h>
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
LiquidCrystal lcd(rs, rw, en, d4, d5, d6, d7);
LiquidCrystal lcd(rs, en, d0, d1, d2, d3, d4, d5, d6, d7);

Parametros

rs
el número del pin Arduino que está conectado al pin RS en la pantalla LCD.
rw
el número del pin Arduino que está conectado al pin RW en la pantalla LCD (opcional). Si no se usa conectar a GND.
en
el número del pin Arduino que está conectado al pin habilitar en la pantalla LCD.
dx
el número del pin Arduino que está conectado a los pines de datos en la pantalla LCD.

Métodos

Metodos Descripcion
begin(columnas, filas) Inicializa la interfaz a la pantalla LCD y especifica las dimensiones de LCD.
setCursos(columna, fila) Va a cierta posicion del LCD.
clear() Limpia el LCD. <incluye un home().
home() Va a la posicion 0,0 (arriba a la izquierda)
print(dato [, base]) Imprime un dato tipo char, byte, int, long. Retorna el numero de bytes escritos.
write(datos) Escribe datos tipo string o String en LCD. Retorna el numero de bytes escritos.
cursor() Muestre el cursor LCD: un guión bajo (línea) en la posición en la que se escribirá el siguiente carácter.
noCursor() Esconde cursos LCD.
blink() Hace parpadear al cursor.
noBlink() Deja fijo el cursor.
display() Vuelve a mostrar el contenido del LCD.
noDisplay() Esconde el contenido del LDC.
autoscroll() Activa el auto scroll.
noAutoscroll() Desactiva el auto scroll.
scrollDisplayLeft() Desplaza toda la pantalla una columna a la izquierda.
scrollDisplayRight() Desplaza toda la pantalla una columna a la derecha.
leftToRight() Establece sentido de escritura de izquierda a derecha.
rightToLeft() Establece sentido de escritura de derecha a izquierda.
createChar() Crea un caracter personalizado.
setRowOffsets() Configura las direcciones de memoria donde se almacenan los caracteres del LCD.

Comentarios

Advertencias

Ejemplo 1

Ejemplo de LCD con manejo directo de 4 bits.

/*
 The circuit:
 * LCD RS pin to digital pin 12
 * LCD R/W pin to ground
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD VSS pin to ground
 * LCD VCC pin to 5V
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
*/

#include <LiquidCrystal.h>

const int rs=12, en=11, d4=5, d5=4, d6=3, d7=2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  lcd.begin(16, 2);      //Columnas, filas
  lcd.print("Hola mundo...");
}

void loop() {
  lcd.setCursor(0, 1);   //Poner cursor en columna 0, fila 1
  lcd.print(millis()/1000);
}

Ejemplo 2

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);      //Columnas, filas
}

void loop() {
  lcd.setCursor(0, 0);
  for (byte i=0; i<10; i++) {
    lcd.print(i);
    delay(500);
  }
  lcd.setCursor(16, 1);
  lcd.autoscroll();      //Prende scrolling
  for (byte i=0; i<10; i++) {
    lcd.print(i);
    delay(500);
  }
  lcd.noAutoscroll();   //Apaga scrolling
  lcd.clear();          //Limpia LCD
}

Ejemplo 3

En este ejemplo creamos 5 caracteres especiales y los intercambiamos a velocidades distintas.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
bool a,b;

byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};

byte smiley[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b00000,
  0b00000,
  0b10001,
  0b01110,
  0b00000
};

byte frownie[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b00000,
  0b00000,
  0b00000,
  0b01110,
  0b10001
};

byte armsDown[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b00100,
  0b01110,
  0b10101,
  0b00100,
  0b01010
};

byte armsUp[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b10101,
  0b01110,
  0b00100,
  0b00100,
  0b01010
};

void setup() {
  lcd.begin(16, 2);
  lcd.createChar(0, heart);
  lcd.createChar(1, smiley);
  lcd.createChar(2, frownie);
  lcd.createChar(3, armsDown);
  lcd.createChar(4, armsUp);
  lcd.setCursor(0, 0);
  lcd.print("I ");
  lcd.write(byte(0));     //heart
  lcd.print(" Arduino! ");
}

void loop() {
  if (millis()%500 < 5){
     lcd.setCursor(13, 0);
     if (a){
        lcd.write(1);    //smiley
     }else{
        lcd.write(2);    //frownie
     }
     a = !a;
  }
  if (millis()%200 < 5){
     lcd.setCursor(4, 1);
     if (b){
        lcd.write(3);    //armsDown
     }else{
        lcd.write(4);    //armsUp
     }
     b = !b;
  }
}

Ejemplo 4

Recibimos un texto desde consola y lo escribimos en el LCD.

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup() {
   Serial.begin(9600);
   lcd.begin(16, 2);
}

void loop() {
  if (Serial.available()) {
    delay(100);
    lcd.clear();
    byte n = 0;
    while (Serial.available()) {
       lcd.write(Serial.read());
       delay(20);
       n++;
       if (n 16){  //Igual
          lcd.setCursor(0,1);
       }
    }
  }
}

Vea también


Referencias externas