conectando una pantalla lcd a arduino
TRANSCRIPT
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
http://panamahitek.com/uso-de-pantalla-lcd-con-arduino/
http://store.arduino.cc/index.php?
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 [email protected] 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