Diferencia entre revisiones de «LCD»
De ArduWiki
(→Ejemplo 2) |
(→Ejemplo 3) |
||
Línea 123: | Línea 123: | ||
== Ejemplo 3 == | == Ejemplo 3 == | ||
+ | En este ejemplo creamos 5 caracteres especiales y los intercambiamos a velocidades distintas. | ||
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
+ | #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; | ||
+ | } | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 21:50 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;
}
}
Vea también