Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comentarios(27)
Luis del Valle Hernández
Indice de contenidos
1 LCD Liquid Crystal Display
2 Conexiones de un LCD con Arduino
3 Ejemplo básico LCD con Arduino
4 Moviendo el texto horizontalmente en un LCD con Arduino
UNIRSE AL CURSO
Aceptas que almacene tu nombre y email para poder enviarte
información de Programarfacil.
No es el objetivo de este artículo explicar la física involucrada detrás de
los LCD, solo decir que utiliza las propiedades de la luz polarizada para
mostrarnos la información en una pantalla. A partir de una serie
de filtros, se consigue mostrar la información gracias a la iluminación de
fondo.
Hay una amplia gama de pantallas LCDs que podemos utilizar con
Arduino. Aparte de las funcionalidades extra que nos puedan dar cada
una de ellas, las podemos diferenciar por el número de filas y columnas,
su tamaño.
Por ejemplo, una pantalla LCD de 16×1 tendrá una fila de 16 caracteres
es decir, solo podremos mostrar 16 caracteres simultáneamente, al
igual que un LCD de 20×4 tendrá 4 filas de 20 caracteres cada una.
En este artículo vamos a trabajar con un LCD típico, de 16×2. Esto
significa que vamos a poder mostrar 16 caracteres en la primera fila y los
mismos en la segunda fila.
PIN FUNCIÓN
1 GND (Tierra)
2 5 Voltios
3 Control de contraste pantalla
Montando el circuito
Una vez conocemos los conectores, ya podemos montar el circuito
básico. El material que vamos a utilizar es el siguiente
2 #include <LiquidCrystal.h> // Entre los símbolos <> buscará en la carpeta de librerías configurada
Una vez incluida, debemos indicar los pines que vamos a utilizar para
enviar los datos. esto lo hacemos a través del
constructor LyquidCrystal(…). Esta función permite diferente número de
parámetros que dependerá de la configuración que estemos utilizando.
En la llamada más básica, la que vamos a utilizar, debemos pasar como
parámetros el RS, la sincronización, y los 4 pines para enviar datos. La
función quedaría de la siguiente manera LyquidCrystal(RW,
sincronización, d4, d5, d6, d7). Si sustituimos estos datos con los pines
de Arduino tenemos lo siguiente.
1 // Lo primero is inicializar la librería indicando los pins de la interfaz
Función setup()
Con esto ya podemos pasar a la función setup(). Esta función nos sirve
para hacer una configuración inicial en nuestros programas. Lo primero
que hacemos es configurar el monitor serie y luego inicializamos la
interfaz del LCD con Arduino y especificamos las dimensiones (16
columnas y 2 filas).
1 void setup() {
3 Serial.begin(9600);
5 // Configuramos las filas y las columnas del LCD en este caso 16 columnas y 2 filas
6 lcd.begin(COLS, ROWS);
7}
Función loop()
Ahora ya podemos empezar a escribir en la pantalla del LCD. Para ello
vamos a utilizar tres métodos:
1 void loop() {
2 // Limpiamos la pantalla
3 lcd.clear();
6 lcd.setCursor(0,0);
9 lcd.print("Hola Mundo!!!!!!");
5 lcd.print("Probando el LCD.");
8 delay(2000);
9}
El algoritmo
Antes de empezar a programar, es conveniente plantear el algoritmo.
Esto nos ahorrará tiempo a la hora de codificar con el lenguaje nativo
de Arduino. Desarrollaremos la idea en sucesivos pasos bien
estructurados y ordenados. En este punto, no hay que profundizar en
cuántas variables o constantes necesito. Lo único que debemos
plasmar son la secuencia de pasos.
UNIRSE AL CURSO
Aceptas que almacene tu nombre y email para poder enviarte
información de Programarfacil.
Declaración de constantes y variables
Lo primero es declarar las constantes y variables necesarias. Algunas
ya las hemos visto en el ejercicio básico. Para este ejemplo he añadido
una constante, VELOCIDAD, que nos permitirá controlar la velocidad
de desplazamiento del texto. Además he creado una variable del tipo
String que contendrá el texto que queremos desplazar.
2 #include <LiquidCrystal.h> // Entre los símbolos <> buscará en la carpeta de librerías configurada
11
12 // Textos
Función setup()
La función setup() es exactamente igual que en el ejemplo básico.
1 void setup() {
3 Serial.begin(9600);
5 // Configuramos las filas y las columnas del LCD en este caso 16 columnas y 2 filas
6 lcd.begin(COLS, ROWS);
7}
Función loop()
Aquí es donde vamos a tener toda la lógica para mostrar el texto en
movimiento. Vamos a ir viendo parte por parte con la explicación
necesaria para que entiendas cómo lo he hecho. Lo primero que
hacemos es obtener el tamaño del texto es decir, el número de
caracteres que tiene nuestro texto. Para ello utilizamos la
función length() que nos devuelve un número entero indicando su
tamaño.
1 void loop() {
4 int tam_texto=texto_fila.length();
2 {
5 // Limpiamos pantalla
6 lcd.clear();
8 //Situamos el cursor
9 lcd.setCursor(0, 0);
10
11 // Escribimos el texto
12 lcd.print(texto);
13
14 // Esperamos
15 delay(VELOCIDAD);
16 }
3 {
4 // Limpiamos pantalla
5 lcd.clear();
7 //Situamos el cursor
8 lcd.setCursor(i, 0);
10 // Escribimos el texto
11 lcd.print(texto_fila);
12
13 // Esperamos
14 delay(VELOCIDAD);
15 }
2 for(int i=16;i>=1;i--)
3 {
4 // Limpiamos pantalla
5 lcd.clear();
6
7 //Situamos el cursor
8 lcd.setCursor(i, 1);
10 // Escribimos el texto
11 lcd.print(texto_fila);
12
13 // Esperamos
14 delay(VELOCIDAD);
15 }
3 {
6 // Limpiamos pantalla
7 lcd.clear();
9 //Situamos el cursor
10 lcd.setCursor(0, 1);
11
12 // Escribimos el texto
13 lcd.print(texto);
14
15 // Esperamos
16 delay(VELOCIDAD);
17 }
Código completo
A continuación te dejo el código completo. Cualquier duda o sugerencia
te agradecería que dejaras un comentario en este artículo.
2 #include <LiquidCrystal.h> // Entre los símbolos <> buscará en la carpeta de librerías configurada
11
12 // Textos
14
15 void setup() {
17 Serial.begin(9600);
18
19 // Configuramos las filas y las columnas del LCD en este caso 16 columnas y 2 filas
20 lcd.begin(COLS, ROWS);
21 }
22
23 void loop() {
24
26 int tam_texto=texto_fila.length();
27
30 {
32
33 // Limpiamos pantalla
34 lcd.clear();
35
36 //Situamos el cursor
37 lcd.setCursor(0, 0);
38
39 // Escribimos el texto
40 lcd.print(texto);
41
42 // Esperamos
43 delay(VELOCIDAD);
44 }
45
48 {
49 // Limpiamos pantalla
50 lcd.clear();
51
52 //Situamos el cursor
53 lcd.setCursor(i, 0);
54
55 // Escribimos el texto
56 lcd.print(texto_fila);
57
58 // Esperamos
59 delay(VELOCIDAD);
60 }
61
63 for(int i=16;i>=1;i--)
64 {
65 // Limpiamos pantalla
66 lcd.clear();
67
68 //Situamos el cursor
69 lcd.setCursor(i, 1);
70
71 // Escribimos el texto
72 lcd.print(texto_fila);
73
74 // Esperamos
75 delay(VELOCIDAD);
76 }
77
80 {
82
83 // Limpiamos pantalla
84 lcd.clear();
85
86 //Situamos el cursor
87 lcd.setCursor(0, 1);
88
89 // Escribimos el texto
90 lcd.print(texto);
91
92 // Esperamos
93 delay(VELOCIDAD);
94 }
95 }