0% encontró este documento útil (0 votos)
10 vistas15 páginas

LCD Programando

El documento proporciona ejemplos de programación para manejar pantallas LCD con Arduino, incluyendo la visualización de texto estático y en movimiento. Se explican funciones clave de la librería LiquidCrystal, como la inicialización del LCD, la limpieza de pantalla y el desplazamiento de texto. Además, se presentan ejemplos prácticos que muestran cómo mostrar datos de sensores y cómo desplazar texto horizontalmente en la pantalla.

Cargado por

jhocenti82
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas15 páginas

LCD Programando

El documento proporciona ejemplos de programación para manejar pantallas LCD con Arduino, incluyendo la visualización de texto estático y en movimiento. Se explican funciones clave de la librería LiquidCrystal, como la inicialización del LCD, la limpieza de pantalla y el desplazamiento de texto. Además, se presentan ejemplos prácticos que muestran cómo mostrar datos de sensores y cómo desplazar texto horizontalmente en la pantalla.

Cargado por

jhocenti82
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PROGRAMACION DE LCD TEXTO SIN MOVIMIENTO

// Incluímos la libreria externa para poder utilizarla


#include <LiquidCrystal.h> // Entre los símbolos <> buscará en la
carpeta de librerías configurada
// Definimos las constantes
#define COLS 16 // Columnas del LCD
#define ROWS 2 // Filas del LCD
// Lo primero is inicializar la librería indicando los pins de la interfaz
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// Configuración monitor serie
[Link](9600);

// Configuramos las filas y las columnas del LCD en este caso 16


columnas y 2 filas
[Link](COLS, ROWS);
}
void loop() {
// Limpiamos la pantalla
[Link]();

// Situamos el cursor en la columna 0 fila 0


[Link](0,0);

// Escribimos Hola Mundo!!!!!!


[Link]("Hola Mundo!!!!!!");
// Situamos el cursor en la columna 0 fila 1
[Link](0,1);

// Escribimos Probando el LCD.


[Link]("Probando el LCD.");

// Esperamos 2 segundos igual a 2000 milisegundos


delay(2000);
}
MOVIENDO EL TEXTO HORIZONTALMENTE EN UN LCD CON
ARDUINO
En el siguiente ejemplo vamos a ver cómo podemos mover el texto de forma
horizontal. Para realizar este ejemplo es importante tener ciertos conocimientos
de programación ya que vamos a utilizar bucles de repetición y funciones de
caracteres. El fin es poder desplazar un texto en horizontal de izquierda a
derecha en la fila 1 (índice 0) y de derecha a izquierda en la fila 2 (índice 1).

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.

1. Obtenemos el tamaño del texto


2. Entrada del texto por la derecha primera fila
1. Bucle recorriendo los caracteres de mayor a menor índice
1. Obtenemos un trozo de la subcadena desde el índice hasta el
final
2. Limpiamos LCD
3. Situamos el cursor en la columna 0 fila 0
4. Mostramos trozo de texto en la pantalla del LCD
5. Esperamos tiempo
3. Desplazamiento de texto hacia la derecha primera fila
1. Bucle recorriendo todas las columnas desde la segunda hasta la
última más uno
1. Limpiamos LCD
2. Situamos el cursor en la columna correspondiente fila 0
3. Mostramos texto completo en la pantalla del LCD
4. Esperamos tiempo
4. Desplazamiento de texto hacia la izquierda segunda fila
1. Bucle recorriendo las columnas desde la última más uno hasta la
columna 1
1. Limpiamos LCD
2. Situamos el cursor en la columna correspondiente fila 0
3. Mostramos texto completo en la pantalla del LCD
4. Esperamos tiempo
5. Salida de texto por la izquierda segunda fila
1. Bucle recorriendo los caracteres de menor a mayor índice
1. Obtenemos un trozo de la subcadena desde el índice hasta el
final
2. Limpiamos LCD
3. Situamos el cursor en la columna 0 fila 0
4. Mostramos trozo de texto en la pantalla del LCD
5. Esperamos tiempo

Es un algoritmo un poco complejo que se divide en 4 bloques. Los dos


primeros nos servirán para desplazar el texto hacia la derecha y los dos
siguientes para desplazarlo hacia la izquierda.

Código del texto en movimiento con LCD y Arduino


Una vez tenemos claro lo que queremos hacer, pasamos a traducirlo al
lenguaje de programación con Arduino. Es importante hacer el paso anterior y,
en este punto, te recomiendo que intentes hacerlo tu mismo. Seguramente te
equivocarás y no sabrás cómo hacerlo, pero a base de practicar es como se
adquiere la experiencia para poder desarrollar tus propios proyectos.
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.

PROGRAMACION DE LCD TEXTO EN MOVIMIENTO

// Incluímos la libreria externa para poder utilizarla


#include <LiquidCrystal.h> // Entre los símbolos <> buscará en la
carpeta de librerías configurada

// Definimos las constantes


#define COLS 16 // Columnas del LCD
#define ROWS 2 // Filas del LCD
#define VELOCIDAD 300 // Velocidad a la que se mueve el texto

// Lo primero is inicializar la librería indicando los pins de la interfaz


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Textos
String texto_fila = "[Link]";

void setup() {
// Configuración monitor serie
[Link](9600);

// Configuramos las filas y las columnas del LCD en este caso 16


columnas y 2 filas
[Link](COLS, ROWS);
}

void loop() {

// Obtenemos el tamaño del texto


int tam_texto=texto_fila.length();

// Mostramos entrada texto por la izquierda


for(int i=tam_texto; i>0 ; i--)
{
String texto = texto_fila.substring(i-1);

// Limpiamos pantalla
[Link]();

//Situamos el cursor
[Link](0, 0);
// Escribimos el texto
[Link](texto);

// Esperamos
delay(VELOCIDAD);
}

// Desplazamos el texto hacia la derecha


for(int i=1; i<=16;i++)
{
// Limpiamos pantalla
[Link]();

//Situamos el cursor
[Link](i, 0);

// Escribimos el texto
[Link](texto_fila);

// Esperamos
delay(VELOCIDAD);
}

// Desplazamos el texto hacia la izquierda en la segunda fila


for(int i=16;i>=1;i--)
{
// Limpiamos pantalla
[Link]();

//Situamos el cursor
[Link](i, 1);

// Escribimos el texto
[Link](texto_fila);

// Esperamos
delay(VELOCIDAD);
}

// Mostramos salida del texto por la izquierda


for(int i=1; i<=tam_texto ; i++)
{
String texto = texto_fila.substring(i-1);

// Limpiamos pantalla
[Link]();

//Situamos el cursor
[Link](0, 1);
// Escribimos el texto
[Link](texto);

// Esperamos
delay(VELOCIDAD);
}
}

Un Hola mundo con Arduino y LCD7


Mostraremos texto y un valor numérico en el LCD, para esto
cargamos el siguiente sketch:

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en,


d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del
LCD
[Link](16, 2);
// Escribimos el Mensaje en el LCD.
[Link]("Hola Mundo");
}

void loop() {
// Ubicamos el cursor en la primera posición(columna:0) de la
segunda línea(fila:1)
[Link](0, 1);
// Escribimos el número de segundos trascurridos
[Link](millis()/1000);
[Link](" Segundos");
delay(100);
}

Como se observa con la función printf() escribimos el texto, y con


setCursor(x,y) indicamos la poción en donde deseamos que se escriba
el texto.

Después de cargar, en su LCD deben obtener el siguiente resultado


Para el caso del LCD de 20x4 tienen que especificar este tamaño
cundo inicializan el LCD.

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del
LCD
[Link](20,4);
// Escribimos el Mensaje en el LCD
[Link]("Hola Mundo");
[Link](0,2);
[Link]("NAYLAMP MECHATRONICS");
[Link](0,3);
[Link](" PERU ");
}

void loop() {
// Ubicamos el cursor en la primera posición (columna:0) de la
segunda línea(fila:1)
[Link](0, 1);
// Escribimos el número de segundos trascurridos
[Link](millis()/1000);
[Link](" segundos");
delay(100);

}
Desplazando el texto en el LCD
En este ejemplo para desplazar el texto usaremos la función
scrollDisplayLeft();

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en,


d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del
LCD
[Link](16, 2);
// Escribimos el Mensaje en el LCD en una posición central.
[Link](10, 0);
[Link]("[Link]");
[Link](5, 1);
[Link]("Tutorial LCD, Test de desplazamiento ");
}

void loop() {
//desplazamos una posición a la izquierda
[Link]();
delay(250);
}

Como se observa en el código, inicialmente escribimos el texto, luego


desplazamos el texto una posición por cada ciclo con una pausa de
250ms , tiempo que si se varía aumentará o disminuirá la velocidad
de desplazamiento, notar que el texto que escribimos es mayor a los
16 caracteres, pero igual el texto no se pierde, esto es porque el
espacio de trabajo por cada fila en realidad es de 40 caracteres, y el
LCD solo muestra los 16 primeros caracteres, pero al desplazarlo
logramos ver los demás caracteres.

Mostrando datos de sensores o variables


en el LCD
En este ejemplo mostramos en el LCD variables, que pueden
representar valores de sensores u otros datos. Para simular los
sensores usaremos potenciómetros conectados a los
pines analógicos.

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en,


d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del
LCD
[Link](16,2);
}

void loop() {
int sen1=analogRead(A0);
float sen2=analogRead(A1)*(5.0 / 1023.0);
float sen3=analogRead(A2)*(100.0 / 1023.0);
int tiempo=millis()/1000;
// Cursor en la primera posición de la primera fila
[Link](0,0);
[Link]("ADC:");
[Link](sen1);
[Link](" ");
// Cursor en la 11° posición de la primera fila
[Link](10,0);
[Link]("V:");
[Link](sen2,1);//1 decimal
[Link]("V ");
// Cursor en la primera posición de la 2° fila
[Link](0,1);
[Link]("T:");
[Link](sen3,1); //1 decimal
[Link]("337C "); // "337" -> "°"
// Cursor en la 11° posición de la 2° fila
[Link](10,1);
[Link]("t:");
[Link](tiempo);
[Link](" s ");

delay(200);

Su resultado debe ser el siguiente.


De igual manera se trabaja con el LCD de 20x4, con la ventaja de
tener más espacio para mostrar los valores.

#include <LiquidCrystal.h>

//Crear el objeto LCD con los números correspondientes (rs, en,


d4, d5, d6, d7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
// Inicializar el LCD con el número de columnas y filas del
LCD
[Link](20,4);
}

void loop() {
int sen1=analogRead(A0);
float sen2=analogRead(A1)*(5.0 / 1023.0);
float sen3=analogRead(A2)*(100.0 / 1023.0);
int tiempo=millis()/1000;
// Cursor en la primera posición de la primera fila
[Link](0,0);
[Link]("ADC: ");
[Link](sen1);
[Link](" ");
// Cursor en la 1° posición de la 2° fila
[Link](0,1);
[Link]("Voltaje: ");
[Link](sen2);
[Link](" V ");
// Cursor en la primera posición de la 3° fila
[Link](0,2);
[Link]("Temperatura:");
[Link](sen3); //1 decimal
[Link](" 337C "); // "337" -> "°"
// Cursor en la 1° posición de la 4° fila
[Link](0,3);
[Link]("tiempo: ");
[Link](tiempo);
[Link](" s ");

delay(200);

}
// include the library code:

44#include <LiquidCrystal.h>

45

46// initialize the library by associating any needed LCD interface pin

47// with the arduino pin number it is connected to

48const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

49LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

50

51void setup() {

52 // set up the LCD's number of columns and rows:

53 [Link](16, 2);

54 // Print a message to the LCD.

55 [Link]("hello, world!");

56}

57

58void loop() {

59 // set the cursor to column 0, line 1

60 // (note: line 1 is the second row, since counting begins with 0):

61 [Link](0, 1);

62 // print the number of seconds since reset:

63 [Link](millis() / 1000);

64}
TUTORIAL LCD, CONECTANDO TU ARDUINO A UN
LCD1602 Y LCD2004
Librería LiquidCrystal de Arduino
El IDE de Arduino ya viene con una librería que nos permite manejar
diferentes tamaños de LCD’s, La documentación completa la pueden
encontrar en la página oficial de Arduino: LiquidCrystal

Explicaremos las funciones principales, las cuales se usaran en este


tutorial.

LiquidCrystal(rs, en, d4, d5, d6, d7)

Función constructor, crea una variable de la clase LiquidCrystal, con


los pines indicados.

begin(cols, rows)

Inicializa el LCD, es necesario especificar el número de columnas


(cols) y filas (rows) del LCD.

clear()

Borra la pantalla LCD y posiciona el cursor en la esquina superior


izquierda (posición (0,0)).

setCursor(col, row)

Posiciona el cursor del LCD en la posición indicada por col y row (x,y);
es decir, establecer la ubicación en la que se mostrará
posteriormente texto escrito para la pantalla LCD.

write()

Escribir un carácter en la pantalla LCD, en la ubicación actual del


cursor.

print()

Escribe un texto o mensaje en el LCD, su uso es similar a un


[Link]

scrollDisplayLeft()

Se desplaza el contenido de la pantalla (texto y el cursor) un espacio


hacia la izquierda.

scrollDisplayRight()
Se desplaza el contenido de la pantalla (texto y el cursor) un espacio
a la derecha.

createChar (num, datos)

Crea un carácter personalizado para su uso en la pantalla LCD. Se


admiten hasta ocho caracteres de 5x8 píxeles (numeradas del 0 al 7).
Donde: num es el número de carácter y datos es una matriz que
contienen los pixeles del carácter. Se verá un ejemplo de esto mas
adelante.

También podría gustarte