Diferencia entre revisiones de «LCD»
De ArduWiki
(→Ejemplo 3) |
(→Ejemplo 4) |
||
Línea 230: | Línea 230: | ||
Serial.begin(9600); | Serial.begin(9600); | ||
lcd.begin(16, 2); | 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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Revisión del 22:02 13 may 2019
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);
Métodos
Metodos | Descripcion |
---|---|
begin(columnas, filas) | Inicializa la interfaz a la pantalla LCD y especifica las dimensiones de LCD. |
setCursos() | |
clear() | |
home() | |
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() | |
blink() | |
noBlink() | |
autoscroll() | |
noAutoscroll() | |
leftToRight() | |
rightToLeft() | |
scrollDisplayLeft() | |
scrollDisplayRight() | |
createChar() | |
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