Arduino display 7 segmentos 2 dígitos


En este post vamos a conectar dos display de 7 segmentos de 2 dígitos al arduino para ver números de 0 a 99

oscar Escrito por oscar 03 January 2019 28718 2

Video del circuito

A continuación, se deja en video en donde se explica al detalle el circuito.

Display 7 segmentos

Es un elemento para visualización de números y letras en electrónica, cada segmento esta hecho de un material que emite luz, los segmentos se organizan o se designan como se muestra en la siguiente imagen.

Display 7 segmentos conexión
Display 7 segmentos conexión

Existen dos tipos de display de 7 segmentos, su principal diferencia es la conexión de los pines que están asociados a los segmentos, estos dos tipos se conocen como ánodo común y cátodo común.

Display de cátodo común

El display cátodo común es aquel que tiene el pin común conectado a los negativos de los LED’s (cátodo). Esto significa que este tipo de display se “controla” con ‘1’ lógico o con voltaje positivo.

Display 7 segmentos cátodo cómun
Display 7 segmentos cátodo común

Display de ánodo común

El display ánodo común es aquel cuyos ánodos están conectados al mismo punto. Este tipo de display es controlado por ceros (0).

Display 7 segmentos ánodo cómun
Display 7 segmentos ánodo común

Conexión del circuito

Conexión display 7 segmentos ánodo cómun
Conexión display 7 segmentos ánodo común

Materiales

Materia Cantidad Descripción
Display 7 segmentos ánodo común 2 Visualizaremos los dígitos del 0 al 9
Arduino uno 1 Controlador para el display
Transistores 2 Transistores NPN 2N2222 que sirven como interruptor eléctrico para los displays, también se puede usar el 2N3904
Resistencias de 1k 9 Las usaremos para proteger las entradas y los leds de display
Cables macho a macho 9 Los usaremos para la conexión

Código

El código lo tenemos en el repositorio de github en la sección arduino code.

const int pins[7] = { 2, 3, 4, 5, 6, 7, 8 }; 

//Declaramos los numeros para el ánodo común
const byte numbersDisplayAnode[10] = {0b1000000,     //0
                            0b1111001,          //1
                            0b0100100,          //2
                            0b0110000,          //3
                            0b0011001,          //4
                            0b0010010,          //5
                            0b0000010,          //6
                            0b1111000,          //7
                            0b0000000,          //8
                            0b0010000};         //9

const int nbrDigits = 2;
//                         digits 1   2
const int digitPins[nbrDigits] = {10,11};

void setup() {
    for(int i = 0; i < 8; i++) {
    pinMode(pins[i], OUTPUT);
    }

    for(int i = 0; i < nbrDigits; i++) {
    pinMode(digitPins[i], OUTPUT);
    }
}

void loop() {
    for(int i = 0; i <  100; i++ ){
    showNumber(i);  
    delay(1);
    }
    
}

void showNumber(int number) {
    if(number == 0) {
    showDigit(0, nbrDigits-1);
    } else {
    for(int digit = nbrDigits-1; digit >= 0; digit--) {
        if(number > 0) {
        showDigit(number % 10, digit);
        number = number / 10;
        }
    }
    }
}

void showDigit(int number, int digit) {
    digitalWrite(digitPins[digit], HIGH);
    byte numberBit = numbersDisplayAnode[number];
    for (int i = 0; i < 7; i++)  {
    int bit = bitRead(numberBit, i);
    digitalWrite(pins[i], bit);
    }
    delay(5);
    digitalWrite(digitPins[digit], LOW);
}

Comentario

Debe aceptar antes de enviar
jesus19991112
jesus19991112

12 June 2019 20:48

por favor podrías pasar los cogidos del semáforo y del display
oscar
oscar

12 June 2019 21:39

Hola, los codigós se encuentran en el repositorio de github, en este mismo post esta el código y el enlace al repositorio