Sunteți pe pagina 1din 20

INSTITUTO JUAN DE LA CIERVA

LCD CON ARDUINO


PROGRAMACION DE UN LCD
SANTIAGO AREVALO PAZ

Comunicaciones Industriales
MICROCONTROLADOR ARDUINO
Sencillamente se trata de un microcontrolador que, gracias a su
condició n de sistema libre, ha provocado multitud de modalidades,
existiendo tantas configuraciones posibles como nuestra imaginació n
sea capaz de crear. Los límites los fijas uno mismo. Gracias a las
modificaciones que lleva a cabo en su configuració n, que será el
encargado de definir qué hará ese microcontrolador.

Funciones basicas
Existe tres funciones bá sicas:

1-. Tenemos una interfaz de entrada que puede estar conectada


directamente a periféricos o bien conectarse a través de puertos a
estos.

2-. Con la primera parte conseguiremos trasladar la informació n hasta


nuestro microcontrolador (este será diferente en funció n de las
necesidades de nuestro proyecto).

3-. La interfaz de salida llevará la informació n hasta los periféricos que


hará n uso de ella (otra placa, un altavoz, una pantalla…)

Al igual que un Pc en el que tenemos diversos componentes como son


el microprocesador, placa base o memoria RAM, Arduino no es só lo
una placa sino que se trata de un sistema completo que, podrá ofrecer
multitud de variaciones.
SOFTWARE PARA PROGRAMACION EN LENGUAJE C
El entorno de desarrollo integrado (IDE) se puede bajar desde la
pá gina de Arduino y se puede distingue las partes que lo constituyen.
El á rea de edició n de có digo es donde se escribirá el có digo del
software que se requiere. Es sencillo visualmente y tiene ciertas
características que usted debe descubrir mediante su uso.
Normalmente, en la jerga de Arduino, aquí se crea el “sketch” (có digo
fuente).

Una secció n importante es el á rea de mensajes, en donde el compilador


le informa posibles errores en el có digo. Ademá s, en esta á rea, la placa
arduino puede enviar informació n acerca de su estado, segú n como sea
programado.
CONEXIÓN DE LA PLACA AL COMPUTADOR
Cada kit Sparkfun dispone de un cable USB para poder conectar la
placa a un computador, tal como se muestra en la figuras.

Cuando conecte ambos elementos, el sistema operativo del


computador le puede solicitar los drivers para poder acceder a la placa.
Si el menú Herramientas - Puerta Serial, no está habilitada, debe seguir
las instrucciones de la pá gina
https://learn.sparkfun.com/tutorials/how-to-installftdi-drivers.

FORMA DE PROGRAMAR ARDUINO


El có digo que se debe escribir en el IDE de arduino debe tener cierta estructura, la que se
indica en la figura.

En la primera secció n (Declaraciones Globales), se deben poner las


bibliotecas específicas que se utilizará n (ninguna en el có digo de
ejemplo) y las variables globales que se utilizará n (pinLed en este
caso). Este bloque se ejecuta una sola vez y bajo cualquier de los
siguientes eventos:

 Encendido de la placa.
 Después de un reset.
 Después de cargar un programa desde el computador.

La función setup(): se ejecuta después de la secció n anterior y por


una sola vez. Se utiliza para configurar el hardware que se utilizará . En
el ejemplo, se inicializa el pin 10 como salida.

La función loop(): por otro lado, se ejecuta después de la funció n


anterior, de forma “perpetua”, a una tasa de repetició n muy cercana a
la velocidad de trabajo de la placa, dependiendo de la cantidad de
instrucciones que tenga.

PRACTICA LCD

PROGRAMACION EN LENGUAJE C DE UNA LCD POR MEDIO


DEL MICROCONTROLADOR ARDUINO

INTRODUCCION

Pantalla LCD (Liquid Crystal Display) es un mó dulo de visualizació n


electró nica y encontrar una amplia gama de aplicaciones. Una pantalla
LCD de 16x2 es un mó dulo muy bá sico y es muy utilizado en diversos
dispositivos y circuitos. Estos mó dulos se prefieren má s de siete
segmentos y otro segmento de mú ltiples LED s. Las razones son: las
pantallas LCD son econó micos; fá cilmente programables; no tienen
limitació n de visualizació n especiales y aun personajes personalizados
(a diferencia de en siete segmentos), animaciones y demá s.

Un LCD 16x2 significa que puede mostrar 16 caracteres por línea y hay
2 tales líneas. En este LCD cada personaje se muestra en la matriz de
píxeles 5x7. Este LCD tiene dos registros, es decir, del sistema y de
datos.

El registro de comando almacena las instrucciones de comandos dados


a la pantalla LCD. Un comando es una instrucció n dada a LCD para
hacer una tarea predefinida como inicializarlo, despejando su pantalla,
ajustar la posició n del cursor, el control de pantalla, etc. Las tiendas de
registro de datos los datos que se muestran en la pantalla LCD. Los
datos son el valor ASCII del cará cter que se mostrará en la pantalla
LCD.
DESCRIPCION
Este apartado está destinado a una breve descripció n del
funcionamiento del mó dulo LCD incluido en el sistema de evaluació n
EasyPIC.

Las pantallas de cristal líquido LCD o display LCD para mensajes


(Liquid Cristal Display) tienen la capacidad de mostrar cualquier
cará cter alfanumérico, permitiendo representar la informació n que
genera cualquier equipo electró nico de una forma fá cil y econó mica.

La pantalla consta de una matriz de caracteres (normalmente de 5x7 o


5x8 puntos) distribuidos en una, dos, tres o cuatro líneas de 16 hasta
40 caracteres cada línea.

El proceso de visualizació n es gobernado por un microcontrolador


incorporado a la pantalla, siendo el Hitachi 44780 el modelo de
controlador má s utilizado.

Figura 1. LCD 2x16: está compuesto por 2 líneas de 16 caracteres

Figura 2. LCD 4x40: está compuesto por 4 líneas de 40 caracteres


A continuació n se presenta la descripció n de señ ales empleadas por el
mó dulo LCD así como el nú mero de patilla a la que corresponden.

CARACTERISTICAS

Las características generales de un mó dulo LCD 16x2 son las


siguientes:

 Consumo muy reducido, del orden de 7.5Mw


 Pantalla de caracteres ASCII, ademá s de los caracteres japoneses
Kanji, caracteres griegos y símbolos matemá ticos.
 Desplazamiento de los caracteres hacia la izquierda o a la
derecha
 Memoria de 40 caracteres por línea de pantalla, visualizá ndose
16 caracteres por línea
 Movimiento del cursor y cambio de su aspecto
 Permite que el usuario pueda programar 8 caracteres
 Pueden ser gobernados de 2 formas principales:
o Conexió n con bus de 4 bits
o Conexió n con bus de 8 bits

El mó dulo LCD posee una zona de memoria RAM llamada DDRAM


(Data Display RAM) donde se almacenan los caracteres que se van a
mostrar en la pantalla. Tiene una capacidad de 80 bytes, 40 por cada
línea, de los cuales só lo 32 se pueden visualizar a la vez (16 bytes por
línea).

De las 80 posibles, las dos direcciones má s importantes de la DDRAM


son:

 Direcció n 00h, que es el comienzo de la primera línea


 Direcció n 40h, que el comienzo de la segunda línea

FUNCIONAMIENTO

El LCD tiene 3 modos de funcionamiento principales:

 Modo Comando
 Modo Cará cter o Dato
 Modo de lectura del Busy Flag o LCD Ocupada

DIAGRAMA DE CONECCION

Consisten en diferentes có digos que se introducen a través del bus de


datos del mó dulo LCD.
DATASHEET
CROQUIS DE LAS CONECCIONES DE LA PRACTICAº

INSTRUCCIONES DE LA PROGRAMACION

librería LiquidCrystal()

Lo primero que debemos hacer para poder utilizar las pantallas LCD
compatibles con la librería "liquidcrystal" es declarar una variable
global de tipo -liquidcrystal- La cuá l representará dentro de nuestro
skeecht el objeto LCD que queremos controlar. La declaració n se ha de
realizar con la siguiente sintaxsis:

Nombre de la pantalla (LCD)

1º rs

2º rw

3º enable desde d0 a d7
Donde todos los pará metros específicados en realidad son valores
numéricos que representan

RS el nº de la placa de arduino conectado al pin RS de la LCD

RW es el pin rw de la LCD

Enable de la LCD se conecta a Enable de la placa

Desde d0 a d7 son los nú meros de los pines de la placa arduino


conectados a los pines de datos de la LCD.

lcd.begin () Especifica las dimensiones de la pantalla (16 columnas y 2


filas)

lcd.write () escribe un caracter en la pantalla

lcd.print () escribe un dato de cualquier tipo en la pantalla

lcd.clear () borra la pantalla y posiciona el cursor en la posició n


superior izquierda para escribir el pró ximo texto.

lcd.home () posiciona el cursor en la esquina sup. izq.

lcd.setCursor () posiciona el cursor en las posiciones designadas

lcd.scrolldisplay () desplaza el contenido de la pantalla hacia la


izquierda o la derecha

lcd.autoscroll () activa el desplazamiento automá tico del texto en la


pantalla

P.D.: Os dejo el enlace a la pá gina oficial


https://www.arduino.cc/en/Reference/LiquidCrystal para que
consultéis por si no os fiá is de lo que nos da él.
PROGRAMACIÓN EN C PARA UNA LCD
EJERCICIO 1
UBICACIÓN DEL CURSOR
// FILA 1: QUE TAL

// FILa 2: milSEGUNDOS DESDE INICIO DEL PROGRAMAS;5016

// ESPERA 2S (DELAY 2000) Y SE BORRA.

// Y SE VUELVE A ENVIAR UNA NUEVA PALABRA.

// FUNCIONA BIEN. JUGAR CON LA LIBRERIA

// APARECEN 2 COLUMNAS Y 2 FILAS

#include <LiquidCrystal.h>

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

int luzfondo= 13;

void setup() {

// put your setup code here, to run once:

pinMode (luzfondo, OUTPUT);

digitalWrite (luzfondo, HIGH);

lcd.begin (16,2);

lcd.setCursor (8,0); // SITUA EN COLUMNA: 8 Y FILA:0 LA 1ª


lcd.print ("QUE TAL");

delay (5000);

lcd.setCursor (0,1); // SITUA EN COLUMNA: 0 Y FILA:1 LA 2ª

lcd.print (millis ());

void loop()

// put your main code here, to run repeatedly:

EJERCICIO 2
UBICACIÓN DEL CURSOR
// EN SERIAL MUESTRA DISTANCIA 0 CM

//POSICION SENSOR: FIJO Y HORIZONTAL LETRAS SE LEEN


NORMAL.

// SI SE QUITA LA TIERRA MIDE 173 CM EN SERIAL

// 5 V: VCC

// GND: GND

// 3: TRIG

//2: ECHO
// 9: led

// SERIAL DA DISTANCIA CUANDO SE ENCIENDE O APAGA


INTERRUPTOR DE TIERRA.

// LED SE ENCIENDE Y APAGA.

#include <LiquidCrystal.h>

const int nLecturas = 10;

int lecturas [nLecturas];

int indice= 0;

int total= 0;

int media= 0;

unsigned long tiempo=0;

unsigned long distancia=0;

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

int luzfondo= 13;

void setup() {

// put your setup code here, to run once:

pinMode (luzfondo, OUTPUT);

digitalWrite (luzfondo, HIGH);


lcd.begin (16,2);

pinMode (6, OUTPUT); //led

pinMode (7, INPUT); //echo

pinMode (8, OUTPUT); //trigger

for(int i=0; i<nLecturas; i++)

lecturas [nLecturas]= 0;

Serial.begin (9600);

void loop() {

// put your main code here, to run repeatedly:

lcd.setCursor (0,0);

lcd.print ("Distancia");

lcd.print (distancia);

lcd.print ("cm");

digitalWrite (8,LOW);
delayMicroseconds (5);

digitalWrite (8,HIGH);

delayMicroseconds (10);

digitalWrite (8,LOW);

tiempo = pulseIn (7, HIGH);

distancia= 0.017*tiempo;

Serial.print ("Distancia: ");

Serial.print (distancia);

Serial.println ("cm");

total= total - lecturas [indice];

lecturas [indice]= distancia;

indice= indice+1;

if (indice >= nLecturas)

indice=0;

media = total/ nLecturas;

if (media<255)
{

analogWrite (6, 255-media);

delay (100);

EJERCICIO 3
UBICACIÓN DEL CURSOR
// LAS PALABRAS QUE SE ENVIAN DESDE EL SERIAL SE LEEN EN LA
LCD.

// ESPERA 2S (DELAY 2000) Y SE BORRA.

// Y SE VUELVE A ENVIAR UNA NUEVA PALABRA.

// FUNCIONA BIEN. JUGAR CON LA LIBRERIA

// APARECEN 2 COLUMNAS Y 2 FILAS

#include <LiquidCrystal.h>

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

int luzfondo= 13;

void setup() {

// put your setup code here, to run once:

pinMode (luzfondo, OUTPUT);

digitalWrite (luzfondo, HIGH);


lcd.begin (20,4);

Serial.begin (9600);

void loop() {

// put your main code here, to run repeatedly:

if (Serial.available ()>0);

delay (2000);

lcd.clear ();

while (Serial.available ()>0)

lcd.write (Serial.read());