Conectando Una Pantalla LCD a Arduino

Post on 27-Dec-2015

569 views 1 download

Transcript of Conectando Una Pantalla LCD a Arduino

Conectando una pantalla LCD a ArduinoPosted on 23 noviembre, 2012

Como ya vimos en una entrada anterior, podemos conectar una pantalla de

cristal líquido a nuestro Arduino. En aquella ocasión yo utilicé un shield que

compré en Dealextreme por unos 7 dólares. Es algo caro si lo comparamos

con lo que en realidad cuesta sólo la pantalla, algo de 2.20 dólares,

podemos comprar 3 pantallas antes que un shield de Dealextreme, claro..

No vamos a tener los botones ni la conectividad sencilla que ofrece el

shield.

Un display HD44780 funcionando desde un Atmega 328p con bootloader Arduino

Bien, Mi pantalla arribó en unos 20 días a casa así que me dediqué a jugar

un poco con ella, leyendo su datasheet primero.

Por suerte mi pantalla tenía la serigrafía escrita con el significado de cada

pin, que detallo a continuación:

Esta pantalla funciona gracias al famoso y superconocido chip HD44780

que se utiliza en infinidad de proyectos.

Bien, veamos los pines:

VSS que es el pin de negativo o masa o 0 volts o GND.

VDD es la alimentación principal de la pantalla y el chip, lleva 5 volts.

VO es el contraste de la pantalla, debe conectarse con un

potenciometro de unos 10k ohms o una resistencia fija una vez que

encontremos el valor deseado de contraste. Tengan en cuenta que si

no conectan esto, no verán nada.

RS es el selector de registro (Register select).

RW es el pin que comanda la lectura/escritura. En nuestro caso

siempre estará en 0 (conectado a GND) para que escriba en todo

momento.

E es enable, habilita la pantalla para recibir información.

D0~D3 no los vamos a utilizar. Como pueden ver la pantalla tiene un

bus de datos de 8 bits, de D0 a D7. Nosotros solamente utilizaremos 4

bits, de D4 a D7.

A y K son los pines del led del backlight de la pantalla. A se conectará

a 4 o 5 volts y K a gnd.

Habiendo conocido los pines del modulito HD44780, conectemoslo a

Arduino, primero el hardware:

En mi caso utiilicé el siguiente conexionado:

VSS: a GND.

VDD: a 5 volts.

VO: Al pin medio de un potenciometro de 10K con sus terminales entre

5v y GND.

RS: Pin 11.

RW: a GND.

E: Pin 12.

D0~D3: Sin conectar.

D4~D7: pines 7 a 10. (bits de datos).

A: A 5 volts pasando por una resistencia de 5K para bajar un poco la

luminosidad.

K: a GND.

Para comandar la HD44780 utilizamos la librería ya conocida LiquidCrystal

Lo primero que hacemos en el código, es incluir la librería y configurarla

según nuestros pines:

#include <LiquidCrystal.h>

LiquidCrystal lcd(11, NULL, 12, 7, 8, 9, 10);

Luego podemos utilizarla como en cualquier otro proyecto:

void setup() {

lcd.begin(16, 2);

}

void loop() {

lcd.setCursor(0,0);

lcd.print("Hola! ");

}

http://www.proyectosarduino.com.ar/

LiquidCrystal

La librería LiquidCrystal te permite controlar displays LCD que

sean complatibles con el driver Hitachi HD44780. Hay muchos

de ellos ahí fuera, y puedes comunicarte con ellos a través del

interfaz de 16 pines.

Este sketch de ejemplo imprime "Hello World!" en el LCD y

muestra el tiempo en segundos desde que Arduino fué

reseteado por última vez.

salida del sketch en un LCD de 2x16

El LCD tiene un interfaz paralelo, significando esto que el

microcontrolador tiene que manipular varios pines del interfaz a

la vez para controlarlo. El interfaz consta de los siguientes pines:

Un pin de selección de registro (RS) que controla en qué parte

de la memoria del LCD estás escribiendo datos. Puedes

seleccionar bien el regisro de datos, que mantiene lo que sale

en la pantalla, o un registro de instrucción, que es donde el

controlador del LCD busca las instrucciones para saber cual es lo

siguiente que hay que hacer.

El pin de lectura/escritura (R/W)que selecciona el modo de

lectura o el de escritura.

Un pin para habilitar (enable) que habilita los registros.

8 pines de datos (D00-D07). Los estados de estos pines (nivel

alto o bajo) son los bits que estás escribiendo a un registro

cuando escribes, o los valores de lectura cuando estás leyendo.

Hay también un pin de contraste del display (Vo), pines de

alimentación (+5V y GND) y pines de retro-iluminación (Bklt+ y

Bklt-), que te permiten alimentar el LCD, controlar el contraste

del display, o encender y apagar la retro-iluminación,

respectivamente.

El proceso de controlar el display involucra la colocación de los

datos que componen la imagen de lo que quieres mostrar, en los

registros de datos, y luego, colocar las instrucciones, en el

registro de instrucciones. La libreríaLiquidCrystal te simplifica

todo este proceso de forma que no neesitas saber las

instrucciones de bajo nivel.

Los LCD-s compatibles con Hitachi pueden ser controlados de

dos modos: 4 bits u 8 bits. El modo de 4 bits requiere siete pines

de E/S de Arduino, mientras el modo de 8 bits requiere 11 pines.

Para mostrar texto en la pantalla, puedes hacer la mayoría de

las cosas en modo 4 bits, por lo que el ejemplo muestra como

controlar un LCD de 2x16 en modo de 4 bits.

NOTA: La librería LiquidCrystal tiene revisiones venidas a menos

después de la versión 0016 de Arduino. Gracias a Limor

Fried por reescribirla para incluir los modos de 4 y 8 bits y otras

funcionalidades. Estas notas hacen referencia a la versión actual

como es Arduino 0017.Otros ejemplos de la librería LiquidCrystal

Hello World  - muestra "hello world!" y los segundos desde el últio reset

Blink  - control del cursor en forma de bloque. Cursor  - control del cursor en forma de guión bajo. Display  - limpieza rápida del display, sin perder lo que había en

él. Text Direction  - controla en qué sentido fluye el texto desde el

cursor. Autoscroll  - scroll automático del nuevo texto. Serial input  - acepta la entrada serie y la muestra. SetCursor  - establece la posición del cursor. Scroll  - realiza un scroll del texto a la izquierda y a la derecha

Circuito

El pin RS del LCD conectado a la E/S digital en el pin 12 El pin enable del LCD conectado a la E/S digital en el pin 11. Los pines D4 - D7 conectado a las E/S digitales desde el pin 5

hasta el 2. Los pines de voltaje y tierra conectados a +5V y tierra. El pin Vo, que controla el constraste, conectado a un

potenciómetro. Ajusta el potenciómetro para que el texto tenga el contraste que tú quieras.

Nota: Este diagrama de wiring es diferente que el que había en

anteriores versiones la de librería LiquidCrystal. Los pines de

R/W (lectura/escritura) están conectado a tierra, y el pin de

enable se mueve al pin 11, liberando el pin E/S para otros usos.

pincha en la imagen para aumentarla

image developed using Fritzing. For more circuit examples, see the Fritzing

project page

Esquemático:

pincha en la imagen para aumentarla

LiquidCrystal

La librería LiquidCrystal te permite controlar displays LCD que

sean complatibles con el driver Hitachi HD44780. Hay muchos

de ellos ahí fuera, y puedes comunicarte con ellos a través del

interfaz de 16 pines.

Este sketch de ejemplo imprime "Hello World!" en el LCD y

muestra el tiempo en segundos desde que Arduino fué

reseteado por última vez.

salida del sketch en un LCD de 2x16

El LCD tiene un interfaz paralelo, significando esto que el

microcontrolador tiene que manipular varios pines del interfaz a

la vez para controlarlo. El interfaz consta de los siguientes pines:

Un pin de selección de registro (RS) que controla en qué parte

de la memoria del LCD estás escribiendo datos. Puedes

seleccionar bien el regisro de datos, que mantiene lo que sale

en la pantalla, o un registro de instrucción, que es donde el

controlador del LCD busca las instrucciones para saber cual es lo

siguiente que hay que hacer.

El pin de lectura/escritura (R/W)que selecciona el modo de

lectura o el de escritura.

Un pin para habilitar (enable) que habilita los registros.

8 pines de datos (D00-D07). Los estados de estos pines (nivel

alto o bajo) son los bits que estás escribiendo a un registro

cuando escribes, o los valores de lectura cuando estás leyendo.

Hay también un pin de contraste del display (Vo), pines de

alimentación (+5V y GND) y pines de retro-iluminación (Bklt+ y

Bklt-), que te permiten alimentar el LCD, controlar el contraste

del display, o encender y apagar la retro-iluminación,

respectivamente.

El proceso de controlar el display involucra la colocación de los

datos que componen la imagen de lo que quieres mostrar, en los

registros de datos, y luego, colocar las instrucciones, en el

registro de instrucciones. La libreríaLiquidCrystal te simplifica

todo este proceso de forma que no neesitas saber las

instrucciones de bajo nivel.

Los LCD-s compatibles con Hitachi pueden ser controlados de

dos modos: 4 bits u 8 bits. El modo de 4 bits requiere siete pines

de E/S de Arduino, mientras el modo de 8 bits requiere 11 pines.

Para mostrar texto en la pantalla, puedes hacer la mayoría de

las cosas en modo 4 bits, por lo que el ejemplo muestra como

controlar un LCD de 2x16 en modo de 4 bits.

NOTA: La librería LiquidCrystal tiene revisiones venidas a menos

después de la versión 0016 de Arduino. Gracias a Limor

Fried por reescribirla para incluir los modos de 4 y 8 bits y otras

funcionalidades. Estas notas hacen referencia a la versión actual

como es Arduino 0017.

Otros ejemplos de la librería LiquidCrystal

Hello World  - muestra "hello world!" y los segundos desde el últio reset

Blink  - control del cursor en forma de bloque. Cursor  - control del cursor en forma de guión bajo. Display  - limpieza rápida del display, sin perder lo que había en

él. Text Direction  - controla en qué sentido fluye el texto desde el

cursor. Autoscroll  - scroll automático del nuevo texto. Serial input  - acepta la entrada serie y la muestra. SetCursor  - establece la posición del cursor. Scroll  - realiza un scroll del texto a la izquierda y a la derecha

Circuito

El pin RS del LCD conectado a la E/S digital en el pin 12 El pin enable del LCD conectado a la E/S digital en el pin 11. Los pines D4 - D7 conectado a las E/S digitales desde el pin 5

hasta el 2. Los pines de voltaje y tierra conectados a +5V y tierra. El pin Vo, que controla el constraste, conectado a un

potenciómetro. Ajusta el potenciómetro para que el texto tenga el contraste que tú quieras.

Nota: Este diagrama de wiring es diferente que el que había en

anteriores versiones la de librería LiquidCrystal. Los pines de

R/W (lectura/escritura) están conectado a tierra, y el pin de

enable se mueve al pin 11, liberando el pin E/S para otros usos.

pincha en la imagen para aumentarla

image developed using Fritzing. For more circuit examples, see the Fritzing

project page

Esquemático:

pincha en la imagen para aumentarla

LiquidCrystal

La librería LiquidCrystal te permite controlar displays LCD que

sean complatibles con el driver Hitachi HD44780. Hay muchos

de ellos ahí fuera, y puedes comunicarte con ellos a través del

interfaz de 16 pines.

Este sketch de ejemplo imprime "Hello World!" en el LCD y

muestra el tiempo en segundos desde que Arduino fué

reseteado por última vez.

salida del sketch en un LCD de 2x16

El LCD tiene un interfaz paralelo, significando esto que el

microcontrolador tiene que manipular varios pines del interfaz a

la vez para controlarlo. El interfaz consta de los siguientes pines:

Un pin de selección de registro (RS) que controla en qué parte

de la memoria del LCD estás escribiendo datos. Puedes

seleccionar bien el regisro de datos, que mantiene lo que sale

en la pantalla, o un registro de instrucción, que es donde el

controlador del LCD busca las instrucciones para saber cual es lo

siguiente que hay que hacer.

El pin de lectura/escritura (R/W)que selecciona el modo de

lectura o el de escritura.

Un pin para habilitar (enable) que habilita los registros.

8 pines de datos (D00-D07). Los estados de estos pines (nivel

alto o bajo) son los bits que estás escribiendo a un registro

cuando escribes, o los valores de lectura cuando estás leyendo.

Hay también un pin de contraste del display (Vo), pines de

alimentación (+5V y GND) y pines de retro-iluminación (Bklt+ y

Bklt-), que te permiten alimentar el LCD, controlar el contraste

del display, o encender y apagar la retro-iluminación,

respectivamente.

El proceso de controlar el display involucra la colocación de los

datos que componen la imagen de lo que quieres mostrar, en los

registros de datos, y luego, colocar las instrucciones, en el

registro de instrucciones. La libreríaLiquidCrystal te simplifica

todo este proceso de forma que no neesitas saber las

instrucciones de bajo nivel.

Los LCD-s compatibles con Hitachi pueden ser controlados de

dos modos: 4 bits u 8 bits. El modo de 4 bits requiere siete pines

de E/S de Arduino, mientras el modo de 8 bits requiere 11 pines.

Para mostrar texto en la pantalla, puedes hacer la mayoría de

las cosas en modo 4 bits, por lo que el ejemplo muestra como

controlar un LCD de 2x16 en modo de 4 bits.

NOTA: La librería LiquidCrystal tiene revisiones venidas a menos

después de la versión 0016 de Arduino. Gracias a Limor

Fried por reescribirla para incluir los modos de 4 y 8 bits y otras

funcionalidades. Estas notas hacen referencia a la versión actual

como es Arduino 0017.

Otros ejemplos de la librería LiquidCrystal

Hello World  - muestra "hello world!" y los segundos desde el últio reset

Blink  - control del cursor en forma de bloque. Cursor  - control del cursor en forma de guión bajo. Display  - limpieza rápida del display, sin perder lo que había en

él. Text Direction  - controla en qué sentido fluye el texto desde el

cursor. Autoscroll  - scroll automático del nuevo texto. Serial input  - acepta la entrada serie y la muestra. SetCursor  - establece la posición del cursor. Scroll  - realiza un scroll del texto a la izquierda y a la derecha

Circuito

El pin RS del LCD conectado a la E/S digital en el pin 12 El pin enable del LCD conectado a la E/S digital en el pin 11. Los pines D4 - D7 conectado a las E/S digitales desde el pin 5

hasta el 2. Los pines de voltaje y tierra conectados a +5V y tierra. El pin Vo, que controla el constraste, conectado a un

potenciómetro. Ajusta el potenciómetro para que el texto tenga el contraste que tú quieras.

Nota: Este diagrama de wiring es diferente que el que había en

anteriores versiones la de librería LiquidCrystal. Los pines de

R/W (lectura/escritura) están conectado a tierra, y el pin de

enable se mueve al pin 11, liberando el pin E/S para otros usos.

pincha en la imagen para aumentarla

image developed using Fritzing. For more circuit examples, see the Fritzing

project page

Esquemático:

pincha en la imagen para aumentarla

main_page=product_info&cPath=2&products_id=185http://www.arduteka.com/arduino/http://www.hispavila.com/3ds/atmega/indice.htmlhttps://sites.google.com/site/electronicaittg0/home/arduino-uno Arduino   Uso de Pantalla LCD con Arduino

Uso de Pantalla LCD con Arduino antony.garcia.gonzalez@gmail.com February 8, 2013 Arduino , Arduino Nano

Una pantalla LCD son dispositivos diseñados para mostrar información en

forma gráfica. LCD significa Liquid Crystal Display (Display de cristal

líquido).

La mayoría de las pantallas LCD vienen unidas a una placa de circuito y

poseen pines de entrada/salida de datos. Como se podrán imaginar,

Arduino es capaz de utilizar las pantallas LCD para desplegar datos.

Es extremadamente sencillo enviarle datos al circuito integrado de una

pantalla LCD desde Arduino gracias a la librería LiquidCrystal que viene

junto con Arduino IDE.

Pero, antes de pasar a la programación veamos un poco más del hardware

que utiliza una pantalla LCD.

Recientemente traje 2 display LCD de 2 filas por 16 columnas. Esto quiere

decir que podemos imprimir caracteres en 2 filas, en las cuales caben 16

caracteres.

Estas pantallas que he comprado tienen un fondo azul y vienen con un LED

de iluminación. Las letras son blancas y podemos desplegar cualquier tipo

de texto.

Este es un ejemplo muy sencillo de un mensaje impreso con mi Arduino

Mega en la pantalla LCD. Como se puede apreciar, para su funcionamiento

requiere que se hagan algunas conecciones.

A continuación les presento el PINOUT de una pantalla LCD como las que les

he mostrado en este post:

Estas pantallas constan de 16 pines. De izquierda a derecha, sus usos son

los siguientes:

Pin 1 – VSS o GND

Pin 2 – VDD o alimentación (+5V)

Pin 3 – Voltaje de contraste. Se conecta a un potenciómetro.

Pin 4 – Selección de registro. Aquí se selecciona el dispositivo para su uso.

Pin 5 – Lectura/Escritura. Dependiendo del estado (HIGH o LOW), se podrá

escribir o leer datos     en el LCD

Pin 6 – Enable. Es el pin que habilita o deshabilita el LCD.

Pin 7 hasta Pin 14 – Son los pines de datos por donde se envía o recibe

información.

Pin 15 – El ánodo del LED de iluminación de fondo (+5v).

Pin 16 – El cátodo del LED de iluminación de fondo (GND).

Si contamos con una pantalla LCD y la queremos utilizar con Arduino,

debemos hacer las siguientes conexiones:

Esta configuración podrá ser usada con cualquier tipo de placa Arduino. Se

debe hacer lo siguiente:

-Conseguir un potenciómetro de 10 K. Los potenciómetros tienen 3 patas.

La de la derecha se conecta a 5V en la placa Arduino. La pata de la

izquierda se conecta en el GND de Arduino. La pata del centro se conecta al

tercer pin en el LCD (Voltaje de contraste).

-Se conecta el pin 1 el LCD al GND de Arduino.

-El pin 2 del LCD va a 5V en Arduino.

-El pin 4 va al pin 12 de Arduino.

-El pin 5 se conecta a GND.

-El pin 6 del LCD va al pin 11 en Arduino.

-Los pines 7, 8, 9 y 10 del LCD no se conectan.

-Los pines 11, 12, 13 y 14 del LCD se conectan en el 5, 4, 3 y 2 del Arduino,

respectivamente.

-El pin 15 se conecta en 5V y el pin 16 se conecta en GND.

Una vez hecho esto, nos dirigimos a Arduino IDE.

Vamos al menú Archivo/Ejemplos/LiquidCrystal/HelloWorld.

Nos aparecerá un código que podremos subir a nuestra placa de al instante.

El código lo que hará es imprimir el mensaje “hello World!” en la fila 1. En

la fila 2 aparecerán los segundos que han transcurrido desde que se inició

la ejecución del código.

Para este ejemplo decidí utilizar mi Arduino Nano. Estoy llevando a cabo un

proyecto donde necesito utilizar una pantalla LCD por lo que decidí

aprovechar la oportunidad para escribir este post.

Me compré una placa perforada y soldé los pines de mi Arduino Nano para

poder trabajar de manera más cómoda con la pantalla LCD.

Usted es libre de hacer el diseño que usted prefiera. Yo decidí adaptar la

pantalla LCD a la placa perforada utilizando los filamentos que conforman

un cable de red RJ45.

Con unos 3 o 4 pies de cable RJ45 obtendrán una cantidad inmensa de

jumpers. El RJ45 pose 8 filamentos que son muy útiles en proyectos de

electrónica.

Utilicé un cable chocolate para el contraste, 2 cables verdes para el enable

y el read/write, 4 cables naranjas para los pines de datos, 3 cables blancos

para el GND y 2 azules para los +5V.

Soldé todo a la placa perforada y agregué un trimmer como potenciómetro

para el contraste.

 

Una vez hecho esto podemos subir el código de Hello World a Arduino o ver

los resultados.

El video no me quedó con buena calidad, sin embargo el usuario es capaz

de darse cuenta de como debe verse el resultado. Si el LCD no despliega

información, pruebe con ajustar el potenciómetro (o trimmer) hasta hallar el

contraste apropiado.

Espero sus comentarios.

Sensor de temperatura y humedad DHT11Posted on 13 noviembre, 2012

Hace algunas semanas arribó a mi casa, entre otras cosas de China, un

sensor de temperatura y humedad DHT-11. Es un pequeño sensor digital

que utiliza un protocolo propietario de un hilo para enviar la información,

funciona de maravillas con Arduino o cualquier microcontrolador similar.

El encapsulado consta de 4 pines, uno de los cuales está sin conexión

Se alimenta con 3 a 6 volts y envía datos en un rate bastante alto, la

precisión es muy buena, aunque su rango es algo acotado para las

temperaturas, cosa que se puede solucionar comprando un sensor mejor

como el DHT-22 (claro, es mas caro también). Desde ya, por el minimo

costo de este sensor, no podemos pedir mas, y para aplicaciones hogareñas

es suficiente.

 

Conectandolo al arduino UNO

La conexión es simple, lo alimentamos con 5 volts, GND y usamos una de

las entradas analógicas (A0~A5) para conectar el pin DATA del sensor

En mi caso, lo hice funcionar con mi LCD keypad shield y para ello utilicé el

siguiente código:

#include "DHT.h"

#include <LiquidCrystal.h>

#define DHTPIN 15 //Analog 1

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

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

void setup() {

Serial.begin(9600);

lcd.begin(16, 2);

dht.begin();

}

void loop() {

float h = dht.readHumidity();

float t = dht.readTemperature();

if (isnan(t) || isnan(h)) {

Serial.println("Sensor desconectado");

} else {

lcd.setCursor(0,0);

lcd.print("Temperatura ");

lcd.print(t,0);

lcd.print("C");

lcd.setCursor(0,1);

lcd.print("Humedad ");

lcd.print(h,0);

lcd.print("%");

delay(1200);

}

}

El delay de 1200ms es necesario para no saturar el sensor con datos, de

esta forma conseguiremos datos factibles y no errores por lecturas muy

rápidas.

 

Probablemente necesiten descargar la libreria DHT11 para Arduino, la

pueden descargar desde aquí: https://github.com/adafruit/DHT-sensor-

library

 

En el caso de que solo quieran conseguir una salida serial de los datos de

humedad y temperatura, el código debería ser algo asi:

#include "DHT.h"

#include <LiquidCrystal.h>

#define DHTPIN 15 //Analog 1

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {

Serial.begin(9600);

dht.begin();

}

void loop() {

float h = dht.readHumidity();

float t = dht.readTemperature();

if (isnan(t) || isnan(h)) {

Serial.println("Sensor desconectado");

} else {

Serial.println(t);

Serial.println(h);

delay(1200);

}

}

http://panamahitek.com/uso-de-pantalla-lcd-con-arduino/

http://geekytheory.com/arduino-ethernet-shield-relay/

https://decibel.ni.com/content/docs/DOC-22834

http://rduinostar.com/tutoriales/tutorial-3-entradas-analogicas/

http://www.electronicaestudio.com/arduino_productos.htm

http://www.olx.es/q/kit-de-practicas-con-arduino-uno-r3/c-366

http://www.laurence.com.ar/artes/programacion/ejemplos.html

https://mega.co.nz/#!qAhQGZpA!JxZzrGdqT96Bto_SJlSeBEzdBKtqQbl-i9MbCR4EVug

http://tdrobotica.co/

http://www.forosdeelectronica.com/

http://electronica-pic.blogspot.mx/2012/04/arduino-es-unaplataforma-abierta-para.html

http://ultra-lab.net/blog/talleres-infantiles-electr%C3%B3nica-imaginaci%C3%B3n-y-juego

http://www.buscamigos.net/

http://docuteka.net/practicas-labview-arduino