LCD
De ArduWiki
Contenido
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, en, d0, d1, d2, d3, d4, d5, d6, d7);
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 o String. Retorna el numero de bytes escritos. |
write(datos) | Escribe datos 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. |
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. |
setRowOffsetsr() |
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(12, 11, 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