Diferencia entre revisiones de «LCD»
De ArduWiki
(→Descripción) |
(→Referencias externas) |
||
(No se muestran 20 ediciones intermedias del mismo usuario) | |||
Línea 2: | Línea 2: | ||
La librería [https://github.com/arduino-libraries/LiquidCrystal 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. | La librería [https://github.com/arduino-libraries/LiquidCrystal 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 [https://github.com/marcoschwartz/LiquidCrystal_I2C 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. | + | Mucho mas eficiente es la libreria [https://github.com/marcoschwartz/LiquidCrystal_I2C LiquidCrystal_I2C] de Frank de Brabander (NOV-2015), que permite a un Arduino controlar un LCD via el bus [[Wire|I2C]], pero tendras que usar un adaptador. |
== Placas aplicables == | == Placas aplicables == | ||
Línea 9: | Línea 9: | ||
== Sintaxis == | == Sintaxis == | ||
<pre> | <pre> | ||
+ | #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); | ||
</pre> | </pre> | ||
+ | |||
+ | == 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 == | == Métodos == | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 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 == | == Comentarios == | ||
Línea 55: | Línea 109: | ||
== Ejemplo 2 == | == Ejemplo 2 == | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
+ | #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 | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 3 == | ||
+ | En este ejemplo creamos 5 caracteres especiales y los intercambiamos a velocidades distintas. | ||
+ | |||
+ | <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> | ||
+ | |||
+ | == Ejemplo 4 == | ||
+ | Recibimos un texto desde consola y lo escribimos en el LCD. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | #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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Línea 63: | Línea 267: | ||
* [https://www.arduinolibraries.info/libraries All Libraries] | * [https://www.arduinolibraries.info/libraries All Libraries] | ||
* [https://www.arduino.cc/en/Reference/LiquidCrystal LiquidCrystal] | * [https://www.arduino.cc/en/Reference/LiquidCrystal LiquidCrystal] | ||
+ | * [http://diymakers.es/aprender-usar-un-display-lcd/ Aprender a usar un display LCD] - Diy Makers | ||
+ | * [https://eldesvandejose.com/2016/04/02/la-libreria-liquidcrystal/ La libreria LiquidCrystal] - El desvan de José | ||
+ | * [https://www.pjrc.com/teensy/td_libs_LiquidCrystal.html Liquid Crystal Library] - PJRC | ||
[[Category:Librerias]] | [[Category:Librerias]] |
Revisión actual del 16:29 4 jul 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); 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
- All Libraries
- LiquidCrystal
- Aprender a usar un display LCD - Diy Makers
- La libreria LiquidCrystal - El desvan de José
- Liquid Crystal Library - PJRC