Shefarol Soluções Web

Display 7 segmentos - Anodo comum - Voltar

Display 7 segmentos - Anodo comum

Neste sketch faremos uma demonstração básica de um circuito com um Display 7 segmentos - Anodo comum, a ideia é mostrar um contador da 0 à 10 e intercalar com o ponto DP, a partir deste ponto é só usar a criatividade para fazer a lógica inversa para um contador regressivo, disparar algo quando o contador chegar a 0, etc.

Display 7 segmentos - Anodo comum

 

CURIOSIDADE
Ele funciona com lógica invertida: o pino comum é ligado ao positivo (VCC), e para acender um segmento, você deve enviar um nível lógico baixo (0V) para o pino correspondente, enquanto o cátodo comum exige nível alto (5V) para ligar. Ele é ótimo para relógios e contadores, sendo uma forma econômica e legível de mostrar números, mas a inversão exige atenção ao programar.

 

Sketch básico do Display 7 segmentos - Anodo comum
// =====================================
//   DISPLAY 7 SEGMENTOS - ÂNODO COMUM
// =====================================

// Pinos dos segmentos A a G
const int segmentos[7] = {2, 3, 4, 5, 6, 7, 8};

// Pino do ponto decimal (DP)
const int pinoDP = 9;

// Matriz de números
// 0 = LIGADO | 1 = DESLIGADO (ânodo comum)
byte numeros[11][7] = {
  {0,0,0,0,0,0,1}, // 0
  {1,0,0,1,1,1,1}, // 1
  {0,0,1,0,0,1,0}, // 2
  {0,0,0,0,1,1,0}, // 3
  {1,0,0,1,1,0,0}, // 4
  {0,1,0,0,1,0,0}, // 5
  {0,1,0,0,0,0,0}, // 6
  {0,0,0,1,1,1,1}, // 7
  {0,0,0,0,0,0,0}, // 8
  {0,0,0,1,1,0,0}, // 9
  {1,1,1,1,1,1,1}  // display apagado
};

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentos[i], OUTPUT);
    digitalWrite(segmentos[i], HIGH);
  }

  pinMode(pinoDP, OUTPUT);
  digitalWrite(pinoDP, HIGH);
}

void loop() {
  for (int n = 0; n <= 9; n++) {

    // Apaga display
    mostrarNumero(10);

    // Acende ponto IMEDIATAMENTE
    digitalWrite(pinoDP, LOW);
    delay(300);

    // Apaga ponto e mostra número IMEDIATAMENTE
    digitalWrite(pinoDP, HIGH);
    mostrarNumero(n);
    delay(1000);
  }
}

// ===============================
//   FUNÇÃO PARA MOSTRAR NÚMEROS
// ===============================
void mostrarNumero(int n) {
  for (int i = 0; i < 7; i++) {
    digitalWrite(segmentos[i], numeros[n][i]);
  }
}

 

Esquema de ligação

Esquema de ligação

 

Lista de materiais