Conectando una pantalla LCD a Arduino Posted 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 Dealextrem Dealextremee por unos 7 dólares. Es algo caro si lo comparamos con lo que en realidad cuesta sólo la pantalla, 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 potenciome potenciometro tro 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 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, HD44780, conectemoslo a Arduino, primero el hardware:
En mi caso utiilicé el siguiente conexionado: 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 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) (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. (Vo), pines de alimentación Hay también un pin de contraste del display (Vo) (+5V y GND) y pines de retro-iluminación (Bklt+ (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 tiene revisiones venidas a menos después de la 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 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 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) (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) (Vo), pines de alimentación (+5V y GND) y pines de retro-iluminación (Bklt+ (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 tiene revisiones venidas a menos después 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 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 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) (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+ (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 tiene revisiones venidas a menos después 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 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 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?mai n_page=product_info&cPath=2&pro ducts_id=185
http://www.arduteka.com/arduino/ http://www.hispavila.com/3ds/atmega/ http://www .hispavila.com/3ds/atmega/ indice.html https://sites.google.com/site/electronic aittg0/home/arduino-uno Arduino Uso de Pantalla LCD con Arduino
Uso de Pantalla LCD con Arduino [email protected] 8, 2013Arduino 2013Arduino, 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 j unto 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 c aben 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 m ensaje 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 – 1 – VSS VSS o GND Pin 2 – 2 – VDD VDD o alimentación (+5V) Pin 3 – 3 – Voltaje Voltaje de contraste. Se conecta a un potenciómetro. Pin 4 – 4 – Selección Selección de registro. Aquí se selecciona el dispositivo para su uso. Pin 5 – 5 – Lectura/Escritura. Lectura/Escritura. Dependiendo del estado (HIGH o LOW), se podrá escribir o leer datos
en el LCD
Pin 6 – 6 – Enable. Enable. Es el pin que habilita o deshabilita el LCD. Pin 7 hasta Pin 14 – 14 – Son Son los pines de datos por donde se envía o recibe información. Pin 15 – 15 – El El ánodo del LED de iluminación de fondo (+5v). Pin 16 – 16 – El 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/Liqu Archivo/Ejemplos/LiquidCrystal/HelloWorld. idCrystal/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 l a 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 ú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 d e 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 DHT11 Posted on 13 noviembre, 2012
Hace algunas semanas arribó a mi casa, entre otras cosas de China, un sensor de temperatura y humedad humeda d DHT-11 DHT-11.. Es un pequeño sensor digital que utiliza un protocolo propietario de un hilo para enviar la información, información, funciona funciona de maravillas con con Arduino o cualquier cualquier microcontrolador 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 aplicacione aplicacioness 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: código: #include "DHT.h"
#include
#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 Probablemen te necesiten descargar la libreria DHT11 para Arduino, la pueden descargar desde aquí: https://g https://github.com/a ithub.com/adafruit/DHT-sensor-libr dafruit/DHT-sensor-library ary
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
#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