Un display de 7 segmentos no es otra cosa que 7 LEDs conectados
entre sí de manera que encendiendo algunos de ellos y apagando otros podemos mostrar la forma de diferentes números. Tal vez su uso pueda parecer redundante al lado de una LCD, pero si en nuestro proyecto solamente deseamos mostrar números o se necesita una visibilidad realmente grande, los 7-segmentos son la mejor opción. Además, consumen mucha menos corriente que un LCD con luz de fondo.
Podríamos utilizar 7-segmentos individuales (como por ejemplo el
producto nº 8546 de Sparkfun), o incluso conjuntos de 4 7-segmentos (como por ejemplo el producto nº 9480), pero ciertamente, el cableado necesario para ponerlos en marcha (y los sketches resultantes) son algo engorrosos, ya que por cada 7-segmentos debemos controlar 7 LEDs individualmente. Pero no solo eso: de hecho, si observamos la cantidad de pines que tiene un 7- segmentos, veremos que suelen tener diez, ubicados en dos filas de cinco: siete de estos pines sirven para iluminar cada segmento, pero hay otro más para iluminar el punto decimal y hay otros dos pines más (generalmente, los situados en el centro de cada fila y numerados con la posiciones 3 y 8), que se han de conectar ambos a tierra (si el 7-segmentos es de tipo “cátodo común”) o bien ambos a 5 V (si el 7-segmentos es de tipo “ánodo común”). Resumiendo: es necesario utilizar más de 8 pines-hembra de nuestra placa Arduino para manejar un solo 7-segmentos. Por tanto (aunque existen otras soluciones), lo más cómodo para nosotros será utilizar shields que ya tengan incorporado un conjunto de 4 dígitos 7-segmentos y que permitan un uso mucho más eficiente (y una programación más fácil) de nuestra placa Arduino.
Por ejemplo, NootropicDesign ofrece su “Digit Shield” listo para acoplar
a nuestra placa Arduino, la cual solo monopoliza cuatro pines de entrada/salida digital (los nº 2,3,4 y 5). Este shield puede ser programado por una librería descargable de su propia web muy sencilla y flexible, la cual contiene diferentes funciones (del tipo mipantalla.setValue() o mipantalla.setDigit(), entre otras) para mostrar los valores numéricos de varias maneras.
Otro shield similar es el “7-segment shield” de Gravitech, que además
de 4 dígitos de 7-segmentos también incorpora “de regalo” un sensor de temperatura, un LED multicolor y una memoria EEPROM extra de 128 KBytes. Todo ello monopoliza 4 pines de la placa Arduino. Desgraciadamente, para programarla en nuestro sketch Arduino, debemos utilizar directamente la librería “Wire” oficial de Arduino, ya que no hay ninguna librería que nos oculte la complejidad de la comunicación I2 C requerida. De todas formas, nos ofrecen un código de ejemplo para que veamos cómo se ha de hacer.
También podemos encontrar útil la placa LEDuino de Cal-Eng, que no
es un shield sino una placa propiamente dicha, capaz de sustituir a la placa Arduino oficial. Incorpora el chip ATmega328P funcionando con el bootloader de Arduino y es programable a través de FTDI mediante el entorno de desarrollo oficial de Arduino, pero tiene la particularidad de incorporar 4 dígitos 7-segmentos de forma totalmente integrada.
Importante: Si no queremos usar ningún shield o placa con los 7-
segmentos integrados, podemos usar módulos con 4 dígitos de 7- segmentos de una forma relativamente cómoda. Por ejemplo, Gravitech distribuye su “I2 C 4 digit 7-segment display”, con cuatro pines acoplables en una breadboard, que tal como su nombre indica, se comunica mediante I2 C con la placa Arduino y se ha de programar igualmente con la librería oficial “Wire” (se proporciona código de ejemplo).
Otro módulo interesante de 4 dígitos es el “7-segment serial display”
(producto nº 9764 de Sparkfun), el cual incorpora un chip ATmega168 que puede comunicarse con el receptor/transmisor TTL-UART de la placa Arduino. Para ello, se ha de conectar el pin del módulo etiquetado como “RX” al pin TX de la placa, además de conectarlo a tierra y a alimentación (de entre 2,6 V y 5,5 V). Si se desea, podemos hacer que el módulo utilice el protocolo SPI en vez del canal serie para comunicarse: en ese caso debemos conectar sus pines etiquetados como “MOSI”, “SCK” y “CSN” a los pines “MOSI”, “SCK” y “SS” de la placa Arduino (además de conectarlo a tierra y la alimentación). Sea cual sea el método de comunicación, este módulo es controlado mediante comandos hexadecimales enviados vía Serial.write() y los números a mostrar son especificados mediante una línea Serial.print() por cada segmento individual uno tras otro, de izquierda a derecha. Si usamos el módulo anterior y necesitamos transformar un número de varias cifras en dígitos individuales para poderlos manipular mejor (por ejemplo, para mostrar un valor obtenido de un sensor, o el número de pulsaciones realizadas sobre un botón, o una simple cuenta atrás que finalice en 0), una buena idea es convertir ese número en un objeto String, para así utilizar funciones como micadena.length() (para saber de cuántas cifras es ese número) y sobre todo micadena.charAt() (para seleccionar un dígito individual concreto de entre los cuatro posibles, y entonces imprimirlo con Serial.print()). Se deja como ejercicio.
Otro módulo de 4 dígitos 7-segmentos es el “TWI 7-seg Display” de
Akafugu. Tal como su nombre indica, ha de ser controlado mediante el protocolo I2 C, por lo que solo necesita cuatro cables para conectarse a una placa Arduino: alimentación (puede ser tanto 3,3 V como 5 V), tierra, línea SDA y línea SCL. Para trabajar con él se ha de utilizar la librería descargable de https://github.com/akafugu/twidisplay . Esta misma librería es la que también se necesita para poder utilizar otro producto de Akafugu, el “TWIDisplay 8-digit LCD”, el cual es una pantalla de 8 dígitos 14-segmentos (controlable también vía I2 C mediante los mismos 4 cables: alimentación -3,3 V o 5 V-, tierra, SDA y SCL). Los 14- segmentos son capaces de formar todas las figuras del alfabeto, tanto en minúsculas como en mayúsculas.
Otro módulo de 4 dígitos 7-segmentos es el producto nº 878 de
Adafruit (y otros similares con diferentes colores). También se comunica con la placa Arduino mediante I2 C, por lo que tiene 4 pines: el etiquetado como “CLK” se ha de conectar al pin SCL de la placa (el pin de entrada analógico nº 5) y el etiquetado como “DAT” al pin SDA de la placa (el pin de entrada analógico nº 4). Además, está el pin de tierra y el de alimentación (a 5 V). Para trabajar con él cómodamente nos podemos descargar de https://github.com/adafruit/Adafruit-LED- Backpack-Library la librería “Adafruit LED Backpack” e instalarla de la forma habitual (aunque recordemos que esta librería necesita tener instalada también la librería “Adafruit GFX”).