Display de 7 segmentos 3 dígitos


Este display es una muy opción para mostrar números y ciertas letras con buena visibilidad y con un toque retro. Se compone de 8 leds por dígito con 7 segmentos y un punto.
La conexión es ciertamente intrincada pero es posible si disponemos de 9 pines digitales de salida:
- A, B, C, D, E, F, G y DP van a los pines de la placa con una resistencia mínima de 220 ohm en cada una.
- GND para cada dígito usando un transistor NPN.
En cada transistor 2N3904 debe haber una resistencia de 1K en la pata central de señal y conectar las patas extremas a GND y al pin del dígito.
Precauciones
- No conectar este display sin usar resitencias y transistores o la placa se quemará.
- Mínimo 220 ohm por LED.
Código para detección de blanco y negro:
Definimos todos los pines del display y variable conteo:
const int segs[7] = {41, 43, 45, 47, 49, 51, 53};
byte conteo = 0;
Creamos un array bidimensional con los números para mostrar según la posición de cada segmento:
const byte digits[11][7] = {
// A B C D E F G
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
…
Ponemos como salida todos los pines incluido los dos dígitos a utilizar:
for (int i = 0; i < 7; i++) {
pinMode(segs[i], OUTPUT);
}
pinMode(37, OUTPUT);
pinMode(39, OUTPUT);
Simplemente leemos por serial un número de uno o dos dígitos y lo actualizamos en conteo:
if (ms.length() <= 2 && isDigit(ms[0])) {
conteo = ms.toInt();
}
En el void muestraNum actualizamos constatemente los números:
void muestraNum() {
if (conteo < 10) {
digitalWrite(39, LOW);
digitalWrite(37, LOW);
for (int x = 0; x < 7; x++) {
digitalWrite(segs[x], digits[conteo][x]);
}
digitalWrite(39, HIGH);
} else if (conteo > 9) {
digitalWrite(39, LOW);
digitalWrite(37, HIGH);
…
La técnica para que se muestren los dígitos es curiosa ya que se hace de forma multiplexada, o sea, se le aplica un retraso entre actualización (delay(5) en este caso) y encendemos o apagamos el anterior o siguiente para que no se queden segmentos erróneos. El ojo humano no lo llega a apreciar si se le aplica el tiempo correcto. Ejemplo:

Notas
- No requiere de librerías.
- El punto DP es opcional.
- Si algún segmento no se ilumina puede ser que esté fundido o tenga mala conexión.