Contador com display 7 Segmentos (Exemplo)
Prof. Epaminondas Lage

Introdução

Prática : Display de 7 segmentos no Arduino

I – Objetivo

Mostra em um display, catodo comum, os números de 0 a 9 e as letras A a F

II – Introdução

O display de 7 segmentos, como o próprio nome diz, tem 7 partes, ou segmentos, que podem ser agrupados de modo a formar números e letras

Os segmentos são organizados de A a F :

Assim, se você quiser mostrar o número 1, basta ativar os segmentos B e C. Para mostrar o número 3, os segmentos A, B, C, D e G, e assim por diante.

Para o modelo de display que estamos utilizando (FJ5101AH, catodo comum), a disposição dos pinos é mostrada na imagem. Deve-se respeitar a tensão máxima que cada LED suporta ( 1,8V).

Um ponto importante é a utilização dos resistores de 220 ohms para cada pino. Como o display trabalha com 1,8V, é necessário limitar a corrente, evitando queimar o componente

A ligação ao Arduino usa os pinos de 2 a 9, mais o GND, na seguinte sequencia :

Pino 2 do Arduino ====> Pino segmento A
Pino 3 do Arduino ====> Pino segmento B
Pino 4 do Arduino ====> Pino segmento C
Pino 5 do Arduino ====> Pino segmento D
Pino 6 do Arduino ====> Pino segmento E
Pino 7 do Arduino ====> Pino segmento F
Pino 8 do Arduino ====> Pino segmento G
Pino 9 do Arduino ====> Pino segmento PONTO
Pino GND do Arduino => Pino 3 do display

O programa, baseado no código desenvolvido pelo site hacktronics. Foram realizadas algumas alterações no mesmo, para que o display mostre não só os números de 0 a 9, mas também as letras de A a F, em ordem crescente :

Montagem

Circuito

Programa Arduino

/* Programa para apresentar em um display de 7 segmentos de 0 a F
Cada número deve piscar o ponto antes de aparecer
http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html
Este padrão é para display de catodo comum */

//Declaração de array

byte seven_seg_digits[16][7] = { { 1,1,1,1,1,1,0 }, //DIGITO 0
{ 0,1,1,0,0,0,0 }, //DIGITO 1
{ 1,1,0,1,1,0,1 }, //DIGITO 2
{ 1,1,1,1,0,0,1 }, //DIGITO 3
{ 0,1,1,0,0,1,1 }, //DIGITO 4
{ 1,0,1,1,0,1,1 }, //DIGITO 5
{ 1,0,1,1,1,1,1 }, //DIGITO 6
{ 1,1,1,0,0,0,0 }, //DIGITO 7
{ 1,1,1,1,1,1,1 }, //DIGITO 8
{ 1,1,1,0,0,1,1 }, //DIGITO 9
{ 1,1,1,0,1,1,1 }, //DIGITO A
{ 0,0,1,1,1,1,1 }, //DIGITO B
{ 1,0,0,1,1,1,0 }, //DIGITO C
{ 0,1,1,1,1,0,1 }, //DIGITO D
{ 1,0,0,1,1,1,1 }, //DIGITO E
{ 1,0,0,0,1,1,1 }//DIGITO F
};
void setup(){
pinMode(2, OUTPUT); //PINO 2 -> SEGMENTO A
pinMode(3, OUTPUT); //PINO 3 -> SEGMENTO B
pinMode(4, OUTPUT); //PINO 4 -> SEGMENTO C
pinMode(5, OUTPUT); //PINO 5 -> SEGMENTO D
pinMode(6, OUTPUT); //PINO 6 -> SEGMENTO E
pinMode(7, OUTPUT); //PINO 7 -> SEGMENTO F
pinMode(8, OUTPUT); //PINO 8 -> SEGMENTO G
pinMode(9, OUTPUT); //PINO 9 -> SEGMENTO PONTO
writePonto(0);
}
//FUNÇÃO QUE ACIONA O PONTO NO DISPLAY
void writePonto(byte dot){
digitalWrite(9, dot);
}
//FUNÇÃO QUE ACIONA O DISPLAY
void sevenSegWrite(byte digit){
byte pin = 2;
/*PARA "segCount" IGUAL A 0, ENQUANTO "segCount" MENOR QUE 7, INCREMENTA "segCount"*/
for (byte segCount = 0; segCount < 7; ++segCount){
/*PERCORRE O ARRAY E LIGA OS SEGMENTOS CORRESPONDENTES AO DIGITO*/
digitalWrite(pin, seven_seg_digits[digit][segCount]);
/*INCREMENTA "pin"*/
++pin;
}
writePonto(1); //LIGA O PONTO DO DISPLAY
delay(300); //INTERVALO DE 300 MILISEGUNDOS
writePonto(0); //DESLIGA O PONTO DO DISPLAY
}


/*MÉTODO RESPONSÁVEL PELA CONTAGEM DE 0 A 9 E CONTAGEM DE "A" ATÉ "F"
NA CONTAGEM HEXADECIMAL "A"=10 / "B"=11 / "C"=12 / "D"=13 / "E"=14 / "F"=15 */

void loop() {
/*PARA "count" IGUAL A 0, ENQUANTO "count" MENOR QUE 16, INCREMENTA "count"*/
for (byte count = 0; count < 16; count++){
delay(2000); //INTERVALO DE 2000 MILISEGUNDOS
sevenSegWrite(count); //FAZ A CONTAGEM
}
delay(4000); //INTERVALO DE 4 SEGUNDOS
}

Conclusão

Referências

http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html

https://www.arduinoecia.com.br/2013/07/display-7-segmentos.html



Administrado por: Epaminondas Lage