lunes, 16 de septiembre de 2013

Temporizador: Arduino + LC

Hoy quiero escribir sobre los displays LCD y su control y uso mediante una placa Arduino.
El proceso de control de un LCD con Arduino nos abre un frente de interacción visual de la electrónica de un modo rápido, sencillo y eficaz.
¿Qué es un display LCD?
De un modo muy resumido, las siglas LCD significan “Liquid Cristal Display” o en español “Pantalla de cristal líquido“, y es una pantalla delgada y plana, formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora. (Wikipedia).
El uso de estas pantallas, está tan extendido hoy en día, que prácticamente todos los aparatos electrónicos suelen llevarlas, para mejor uso y facilidad de interacción.
Existen muchos tipos de LCD, variando en forma y tamaño, número de píxeles, color, y la gran mayoría tienen un coste de unos pocos €uros en cualquier tienda de electrónica.
El que voy a utilizar yo, es del tipo más sencillo de controlar, y son los displays LCD diseñados para interactuar con circuitos integrados, de entrada de 4/8 bits en paralelo, basados en el controlador Hitachi HD44780.
Estos se caracterizan principalmente por el número de caracteres que son capaces de representar, que viene dado en su datasheet generalmente por unos números del tipo “8×1″, “16×2″, “20×4″, que significan “Número de caracteres x Número de filas“, así pues, un display LCD 16×2, es capaz de representar 2 filas de 16 caracteres.
El display LCD que utilizaré yo (Gracias a Dani), es de 16×2 caracteres, de fondo verde y caracteres negros con retroiluminación led de color verde:


Sigue leyendo!


Estos displays se controlan muy facilmente con una placa Arduino o un PIC y muy pocas lineas de código. Para ello veamos sus pines para saber como se conectan:
- Pin 1 – Vss: GND o tierra.
- Pin 2 – Vdd: Alimentación Vcc o +5V.
(Algunos pueden alimentarse a 3 Vcc)
- Pin 3 – V0: Control del contraste del display, conectamos este pin al terminal variable de un potenciómetro conectado a Vcc y Masa en sus terminales extremos.
- Pin 4 – RS: Selección de Registro.
0 lógico: Registro de comandos (escritura),
1 lógico: Registro de datos (escritura, lectura)
- Pin 5 – R/W:
0 lógico: Escritura del LCD.
1 Lógico: Lectura del LCD.
- Pin 6 – Enable: El famoso Enable de casi todos los componentes de la electrónica digital. Un 1 lógico señala el inicio de escritura o lectura del LCD, un 0 lógico, desactiva todas las funciones.
- Pin 7-10 – D0/D3: Pines correspondientes al bus de datos.
D0 corresponde al bit menos significativo.
Estos pines no se utilizan si realizamos operaciones sobre el LCD de 4 bits.
- Pin 11-14 – D4/D7: Pines correspondientes al bus de datos.
D7 corresponde al bit más significativo y puede utilizarse como “Busy Flag”,
si leemos sobre este pin, un 1 lógico nos indicará que el LCD se encuentra ocupado,
no permitiendonos realizar ninguna operación hasta que se deshabilite.
En la tabla no aparecen, ya que no todos los displays disponen de los pines 15 y 16, yo he modificado la imagen para añadirlos, y son simplemente:
- Pin 15 – Ánodo de la retroiluminación : R + 5V.
- Pin 16 – Cátodo de la retroiluminación: GND.
Ahora si, podemos meternos de lleno en el control del LCD.
En la web de Arduino, vienen muchos ejemplos con sus correspondientes imágenes de conexión del LCD con la placa en cuestión, además del código para ponerlo en funcionamiento en pocos clicks.
El código para poner en funcionamiento un LCD es muy sencillo, y se trata simplemente de declarar los pines a utilizar por el LCD, situar el cursor en el caracter que deseemos escribir (Nº caracter, Fila) y escribir sobre el LCD.
Arduino simplifica el trabajo de escribir sobre un LCD hasta un punto que resulta muy fácil. Aqui un ejemplo de código para escribir una frase sobre un LCD.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Ejemplo Frase "Hello World" en LCD con Arduino
#include <LiquidCrystal.h> //Incluimos la libreria de control del LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Inicializamos la libreria con los pines a utilizar
void setup() {
lcd.begin(16, 2);   //Configuramos el numero de caracteres y filas a utilizar
}
void loop() {
lcd.setCursor(0, 0); //Situamos el cursor en el caracter 0, fila 0
lcd.print("Hello World") //Escribimos sobre el LCD
}
Yo he preferido hacer algo más interesante que los ejemplos que vienen en dicha web, asi que me he puesto a programar un temporizador.
Empezando por la conexión del circuito, la siguiente imagen creada con Fritzing
(Fántastico programa freeware y multiplataforma para crear esquemas) nos muestra como conectar el LCD con Arduino y algunos componentes más necesarios para este proyectillo, como son pulsadores, led o un buzzer.
El esquema consta de un Arduino UNO, un display LCD 16×2, un potenciómetro para el control de contraste del LCD, un led de señal de fin de temporización, y 4 pulsadores con su resistencia Pull-down de 10kΩ, los 3 pulsadores cuyos cables son naranja son los que permitirán la elección del tiempo (Horas, Minutos y Segundos) mientras que el 4to pulsador, el del cable azul, es que que dará la señal de inicio del temporizador.
Una vez conectado todo, solo queda la programación y ponerlo en funcionamiento.
Mi código es algo largo asi que dejaré el archivo Temporizador.pde de Arduino para el que quiera descargarlo y echarle un vistazo.
Y a funcionar!


2 comentarios:

  1. Que coños crack, lo ha fusilado directamente de este otro proyecto:
    https://electronicavm.net/2011/06/22/temporizador-arduino-lcd/

    Ya que copias, por lo menos podías poner las fuentes y el autor.
    Eres un fraude

    ResponderEliminar