Magos do Arduino

Display de Sete Segmentos

Aprenda a utilizar um display de Sete Segmentos com o Arduino

Magos do Arduino

Display de Sete Segmentos

Displays de Sete Segmentos são displays de leds muito utilizados em dispositivos eletrônicos.

Display de Sete Segmentos

Eles são compostos por sete leds controlados individualmente.

Por serem compostos por leds, eles necessitam de um resistor de 220-330 Ohms por led.

Neste projeto você criará um circuito que faz o uso um display de Sete Segmentos com o Arduino.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x breadboard
  • 1x Arduino UNO
  • 1x Display de Sete Segmentos
  • 7x Resistores de 220-330 Ohms
  • Jumpers

Circuito Display de Sete Segmentos

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Circuito Display de Sete Segmentos

Schematics Display de Sete Segmentos

A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.

Schematics Display de Sete Segmentos

Código fonte para o circuito do display de Sete Segmentos

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

/**
* Código do curso Magos do Arduino para utilizar um display de sete segmentos 
* com o Arduino.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/

#define PINO_A 1
#define PINO_B 2
#define PINO_C 3
#define PINO_D 4
#define PINO_E 5
#define PINO_F 6
#define PINO_G 7

void setup() {
    pinMode(PINO_A, OUTPUT);
    pinMode(PINO_B, OUTPUT);
    pinMode(PINO_C, OUTPUT);
    pinMode(PINO_D, OUTPUT);
    pinMode(PINO_E, OUTPUT);
    pinMode(PINO_F, OUTPUT);
    pinMode(PINO_G, OUTPUT);
}

// mapeamento dos dígitos a serem exibidos no display (0 a 9)
byte digitos[10][7] = {
    { 1, 1, 1, 1, 1, 1, 0 }, // 0
    { 0, 1, 1, 0, 0, 0, 0 }, // 1
    { 1, 1, 0, 1, 1, 0, 1 }, // 2 
    { 1, 1, 1, 1, 0, 0, 1 }, // 3
    { 0, 1, 1, 0, 0, 1, 1 }, // 4
    { 1, 0, 1, 1, 0, 1, 1 }, // 5
    { 1, 0, 1, 1, 1, 1, 1 }, // 6
    { 1, 1, 1, 0, 0, 0, 0 }, // 7
    { 1, 1, 1, 1, 1, 1, 1 }, // 8
    { 1, 1, 1, 1, 0, 1, 1 }  // 9
};

//contém o valor do dígito a ser exibido
byte numero = 0;

void loop() {
    digitalWrite(PINO_A, digitos[numero][0]);
    digitalWrite(PINO_B, digitos[numero][1]);
    digitalWrite(PINO_C, digitos[numero][2]);
    digitalWrite(PINO_D, digitos[numero][3]);
    digitalWrite(PINO_E, digitos[numero][4]);
    digitalWrite(PINO_F, digitos[numero][5]);
    digitalWrite(PINO_G, digitos[numero][6]);

    numero++;
    if (numero == 10) { // se o número for 10, reinicia
    numero = 0;
    }
    
    delay(1000);
}