Arduino display 7 segmentos 2 dígitos


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

oscar Escrito por oscar 03 January 2019 26986 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.
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 Anodo común y Catodo 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 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).

Conexión del circuito

Materiales

Materia Cantidad Descripción
Display 7 segmentos ánodo común 2 Visualizaremos los digitos 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 codigo 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