Serial Display Led

Vamos a ver cómo utilizar con Arduino un módulo LED de 4 dígitos fabricado por Sparkfun Electronics y disponible en varios colores.

Serial_Display-KellyGreen

Cuando lo vemos de cerca lo primero que observamos es que es un módulo muy compacto montado en una placa con un microcontrolador, precisamente un ATmega 328, que nos va a permitir aprovechar el display al máximo de una forma muy sencilla a través del puerto serie de Arduino.
Estaréis pensando que se podría controlar el display LED directamente con el ATmega328 de nuestro Arduino UNO siendo más económico aún que este módulo… claro que seria posible, pero necesitaríamos emplear muchos pines además de otros componentes adicionales por no hablar del programa necesario para hacerlo funcionar correctamente. Con este módulo de Sparkfun disponemos, a un precio muy razonable, de todo lo necesario para incluirlo en nuestros proyectos fácilmente, incluyendo posibilidades alfanuméricas, ajuste de brillo y control por puerto serie o a través del interface SPISerial_Display-KellyGreen_back
Pines de los que dispone el módulo:

GND Masa (0v)
VCC Alimentación (desde 2.6v a 5.5v max)
MISO Data Out, interface SPI
SCK Clock, interface SPI
RST Reset (0v desactiva el display)
MOSI Data In, interface SPI
CSN Slave Select, interface SPI
RX Serial TTL input (no debe exceder Vcc +0.5v)

Para poder utilizar el módulo lo primero es soldar unos cablecillos a los contactos; para nuestros ejemplos sólo vamos a necesitar soldar 3 cables (Vcc, Gnd y Rx)
El montaje más simple es el mostrado en el esquema, utilizando la entrada serie Rx del Display, que requiere solamente un pin de nuestro Arduino, dejándonos libres el resto La alimentación puede tomarse directamente de la placa, admite 3.3v o 5v, hay que tenerlo en cuenta si alimentamos el circuito con una pila de 9v sin olvidar tampoco que la tensión de la entrada Rx no debe exceder Vcc+0.5v
En el ejemplo no hay problema, alimentamos el Arduino con el cable USB y utilizamos la salida de 5v como tensión de alimentación Vcc del display:

Serial Display Cableado

Una vez conectado de esta forma sólo hay que cargar los programas, utilizando la librería “SoftwareSerial.h” que permite utilizar la comunicación serie desde cualquier pin digital.
Ojo, si compilas el código con una versión del IDE anterior al 1.00 necesitas antes tener instalada la librería que no viene por defecto con el software de Arduino, se trata de “NewSoftSerial”, para instalarla primero tenemos que descargar el fichero rar, y descomprimirlo en el directorio “arduino-0022\libraries” reiniciando el programa para que actualice los cambios.

Ejemplo1: Serial Monitor

La forma más simple de introducir datos es a través de la herramienta “Serial Monitor” del IDE de Arduino, nos permite visualizar los datos enviados por el puerto serie y también introducirlos por el cuadro de texto.

Mediante este programa de ejemplo podemos probar fácilmente todos los caracteres y códigos de control que admite el módulo asi vemos como quedarían representados.
Puedes experimentar viendo los caracteres imprimibles y el resultado mostrado en el display. Aunque sea un display alfanumérico, en realidad no puede representar todas las letras por las limitaciones propias de los dígitos de 7 segmentos, pero aún así nos puede dar mucho juego.

 

En primer lugar el programa inicializa el display, dado que al encenderse éste recuerda su estado anterior, es necesario reiniciarlo enviando el caracter “v”, que borra la pantalla y sitúa el cursor en el primer dígito. Ajustamos también el brillo al nivel deseado (0 máximo y 255 mínimo) esta función nos permitiría reducir el consumo de batería en una aplicación portátil.

captura de pantalla: serial monitor

Mediante la función InputSerial() se lee lo tecleado desde la ventana de entrada, de este modo el PC envía datos al Arduino que a su vez los manda al display.
Los caracteres se van mostrando según los enviamos de izquierda a derecha, si mandamos más de 4 caracteres a partir del 5º volvería a mostrarse a partir del dígito de la izquierda; así por ejemplo, si enviamos “1234” veremos eso mismo en pantalla, pero si enviamos “12345” veremos “5234”. Los espacios en blanco se consiguen con el caracter “x” de modo que si enviamos “xxFF” obtendremos ” FF” los dos primeros caracteres en blanco.

Ejemplo2: Reloj Digital

Unicamente con el display conectado y sin ningún otro elemento podemos hacernos un contador, simplemente con un bucle y si es el tiempo lo que medimos entonces tenemos un reloj Este nuestro ejemplo, se muestra los minutos y segundos en el formato 00(min):00(seg) cuando alcanza una hora cambia al formato de horas 01(horas):00(min)
Para obtener un valor razonablemente preciso del tiempo usamos la función millis() que nos devuelve el numero de milisegundos que ha pasado desde que está corriendo el programa en Arduino

No es posible obtener mucha precisión con este sistema, de hecho hay un error bastante apreciable de algunos segundos al día, se puede afinar ajustando el valor de la funcion delayMicroseconds(); pero al fin y al cabo sólo es un ejemplo ilustrativo, dejo el montaje abierto a otras mejoras, como añadir botones de puesta en hora o incluir en el montaje un oscilador externo de precisión como referencia de tiempo

Ejemplo3: Milivoltimetro para Vcc=5 V

Añadimos un nuevo componente a nuestro circuito, un potenciometro de 1KOhm conectado a una entrada analógica, por ejemplo el pin A5, como muestra la imagen; de esta forma podemos variar manualmente el voltaje en el pin A5 desde 0v hasta VccSerial Display + potenciometro

Arduino UNO dispone de un total de 6 entradas analógicas, numeradas del 0 al 5, y un convertidor A/D de 10 bits que nos va a dar valores entre 0 y 1023.
Como 5v/1024=0.0048 este es cada paso que podemos medir con el convertidor A/D es decir tenemos una precisión de 0.005 voltios, o sea del 0.1%, más que suficiente para la mayoría de aplicaciones.

Por tanto podemos construirnos un elemental voltímetro con una precisión de 0.01V

Cuidado! las entradas analógicas no están protegidas contra sobretensiones, por tanto si tratais de medir directamente un valor superior a Vcc lo mas probable es que vuestro querido Arduino acabe en la basura. Tampoco olvideis que el display no admite mas de 5.5V.

Ahora que sabemos medir voltajes, podemos medir también intensidades, resistencias,…Un proyecto interesante sería construirnos nuestro propio multímetro portátil, verdad?

Ejemplo4: Indicador de Temperatura

OIndicador de Temperaturatra aplicación inmediata del display puede ser la de termómetro, para ello solo necesitamos sustituir el potenciometro del ejemplo anterior por otro componente, el sensor LM135, un pequeño dispositivo con encapsulado TO-92 de 3 pines que nos permite medir desde -40 a 100 ºC.

Las conexiones son las siguientes:

  • LM35PIN1 → Vcc
  • PIN2 → Out
  • PIN3 → GND

El Pin2 del LM135 nos da un voltaje proporcional a la temperatura absoluta, concretamente 10mV/ºK sólo tenemos que leer ese voltaje usando una de las entradas analógicas de Arduino, en nuestro caso la entrada analógica A5 nos mide este valor y sólo tenemos que hacer una rápida operación para obtener los grados celsius o fahrenhait.

Códigos de este tutorial

Descargar ejemplos

También te podría gustar...