Contador com Display de 7 Segmentos
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 habilitadotm1637.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(:) centralatualizaDisplay(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
}