Magos do Arduino

Display de Sete Segmentos com CD4511

Aprenda a utilizar um display de Sete Segmentos com CD4511 no Arduino

Magos do Arduino

Display de Sete Segmentos com CD4511

O CI (Circuito Integrado) CD4511 serve para controlar displays de Sete Segmentos.

CD4511

Sua utilização é simples, e somente 4 conexões são necessárias para controlar o display de Sete Segmentos.

Com o Arduino, podemos economizar no número de GPIOs utilizadas.

Display de Sete Segmentos com CD4511

Neste projeto você criará um circuito que faz o uso um display de Sete Segmentos com CD4511 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
  • 1x CD4511
  • Jumpers

Circuito Display de Sete Segmentos com CD4511

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 com CD4511

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

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
* controlado pelo CI CD4511 no Arduino.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/

// pinos do CD4511
#define PINO_A 2
#define PINO_B 3
#define PINO_C 4
#define PINO_D 5

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

// valores em binário para cada número a ser enviado para o CD4511
int valores[10][4] = {
    { 0, 0, 0, 0 }, // 0
    { 0, 0, 0, 1 }, // 1
    { 0, 0, 1, 0 }, // 2
    { 0, 0, 1, 1 }, // 3
    { 0, 1, 0, 0 }, // 4
    { 0, 1, 0, 1 }, // 5
    { 0, 1, 1, 0 }, // 6
    { 0, 1, 1, 1 }, // 7
    { 1, 0, 0, 0 }, // 8
    { 1, 0, 0, 1 }  // 9
};

// dígito a ser exibido
byte digito = 0;
void loop() {
    digitalWrite(PINO_A, valores[digito][3]);
    digitalWrite(PINO_B, valores[digito][2]);
    digitalWrite(PINO_C, valores[digito][1]);
    digitalWrite(PINO_D, valores[digito][0]);
    
    digito++;
    if (digito == 10) { // se o dígito for 10, reinicia para 0
    digito = 0;
    }

    delay(500);
}