Contador com Display de 7 Segmentos

Fabio Souza
Franzininho
Published in
2 min readOct 9, 2018

Um contador digital pode ser muito util para algumas aplicações, seja para marcar um placar de um jogo ou para a contagem de objetos, por exemplo.

Nesse tutorial vamos explicar como fazer um contador usando um display de 7 segmentos de 4 dígitos.

Materiais

  • Franzininho DIY
  • Módulo Display de 7 segmentos TM1637
  • chave táctil

Circuito

Código

Para o código, vamos usar a biblioteca TM1637.h, disponível nesse repositório: https://github.com/reeedstudio/libraries/tree/master/DigitalTube

O código faz a leitura do botão e incrementa o cotador cada vez que o mesmo é pressionado:

/**************************
Contador com Display de 7 segmentos
Por Fábio Souza
***************************/
#include "TM1637.h" //Biblioteca
// Frankie Chu’s Library for TM1637 Display
// Download this library from the GitHub link shown below
// Put it inside the “arduino/libraries” folder
// https://github.com/reeedstudio/libraries/tree/master/DigitalTube //{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//0~9,A,b,C,d,E,F // Functional for display
// Conexões do display
#define CLK 0
#define DIO 1
//Botão
#define BT 2
//Variável auxiliar para contagem
int valor = 0;
TM1637 tm1637(CLK,DIO); // Cria uma instancia para o displayvoid setup(){
pinMode(BT,INPUT_PULLUP); //configura botão como entrada e Pull up habilitado
tm1637.init(); // inicia display
tm1637.set(BRIGHTEST); // Nivel do brilho do display // BRIGHT_DARKEST = 0,BRIGHTEST = 7 BRIGHT_TYPICAL = 2;
tm1637.point(POINT_OFF); // Desliga ponto(:) central
atualizaDisplay(valor); //escreve valor incial no display

}
void loop() {
if(digitalRead(BT) == LOW){ //Se o botão foi pressionado e o seu estado mudou//
delay(20); //tempo para bounce
while(digitalRead(BT) == LOW); // aguarda botão ser solto
valor++;
atualizaDisplay(valor);
}
}
void atualizaDisplay(int x){

tm1637.display(3,x%10); //escreve o primeiro digito
if(x>9)tm1637.display(2,(x/10)%10); //se passou de 9 escreve no segundo digito
if(x>99)tm1637.display(1,(x/100)%10); //se passou de 99 escreve no terceiro digito
if(x>999)tm1637.display(0,(x/1000)%10); //se passou de 999 escreve no terceiro digito
}

--

--

Fabio Souza
Franzininho

Engenheiro, professor e fazedor! Apaixonado por tecnologia, é diretor de operações do portal Embarcados e líder do projeto Franzininho. about.me/fabio.souza