Projeto 14 – Contador Digital

O contador digital é um display de um dígito que vai aumentando conforme o tempo. Como ele é um contador de um dígito apenas, começa em 0 e vai até 9. O projeto 9 parece um projeto um pouco simples, mas que ensina o funcionamento de um display bastante usado em projetos de eletrônica.

Com certeza você já viu esse contador em algum lugar. Ele é feito com um componente chamado display de 7 segmentos e é composto por alguns LEDs distribuídos em segmentos, para formação de caracteres e números. Todos os LEDs estão inseridos dentro de um mesmo componente, onde cada pino corresponde a um terminal de um LED e há um terminal comum correspondente ao positivo de todos os LEDs. Esse tipo de display pode ser encontrado em relógios digitais, rádios-relógio e etc. 

Relógio digital com display de 7 segmentos

No display existem 8 LEDs, sendo um para cada segmento (traço) e mais um para o ponto.

Display de 7 segmentos

Note que temos 10 pinos, sendo um LED para cada segmento e 2 comuns a todos os LEDs, sendo um de cada lado. Por mais que tenhamos 2 pinos comuns, precisamos ligar apenas 1 para que o display funcione.

Para cada número se acende um conjunto de LEDs de forma a montar o dígito que se deseja. Por exemplo, para fazer o número 1, acendemos os LEDs B e C. Já para o número 8, acendemos todos.

Ligando cada um dos terminais dos LEDs a uma porta do Arduino conseguimos controlá-los individualmente formando caracteres e números. No projeto 14 iremos construir um contador digital com o display de 7 segmentos mostrando os números de 0 a 9 com um intervalo de 1 segundo.

Material necessário

1x  Display 7 segmentos
1x Resistor 220 ohm
10x Jumper Macho-macho
1x Cabo USB
1x Placa Uno

Montagem do projeto

Como se fossem vários LEDs, precisamos colocar um pino do Arduino para cada pino do display. Como o lado positivo dos LEDs é comum a todos, precisamos de apenas 1 resistor.

Programa Projeto 14 – Contador digital

O programa, apesar de comprido, é bastante simples. Apenas acendemos e apagamos os LEDs, conforme o número que desejamos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// Projeto 14 - Contador digital
 
int segE = 7;
int segD = 8;
int segC = 9;
int segB = 13;
int segA = 12;
int segF = 11;
int segG = 10;
 
void setup()
{
  pinMode(segE, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segA, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
}
 
void loop()
{
  acende0();
  delay(1000);
  acende1();
  delay(1000);
  acende2();
  delay(1000);
  acende3();
  delay(1000);
  acende4();
  delay(1000);
  acende5();
  delay(1000);
  acende6();
  delay(1000);
  acende7();
  delay(1000);
  acende8();
  delay(1000);
  acende9();
  delay(1000);
}
 
void acende0()
{
  digitalWrite(segE, LOW);
  digitalWrite(segD, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segB, LOW);
  digitalWrite(segA, LOW);
  digitalWrite(segF, LOW);
  digitalWrite(segG, HIGH); 
}
void acende1()
{
  digitalWrite(segE, HIGH);
  digitalWrite(segD, HIGH);
  digitalWrite(segC, LOW);
  digitalWrite(segB, LOW);
  digitalWrite(segA, HIGH);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, HIGH); 
}
void acende2()
{
  digitalWrite(segE, LOW);
  digitalWrite(segD, LOW);
  digitalWrite(segC, HIGH);
  digitalWrite(segB, LOW);
  digitalWrite(segA, LOW);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, LOW); 
}
void acende3()
{
  digitalWrite(segE, HIGH);
  digitalWrite(segD, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segB, LOW);
  digitalWrite(segA, LOW);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, LOW);
}
void acende4()
{
  digitalWrite(segE, HIGH);
  digitalWrite(segD, HIGH);
  digitalWrite(segC, LOW);
  digitalWrite(segB, LOW);
  digitalWrite(segA, HIGH);
  digitalWrite(segF, LOW);
  digitalWrite(segG, LOW);
}
void acende5()
{
  digitalWrite(segE, HIGH);
  digitalWrite(segD, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segB, HIGH);
  digitalWrite(segA, LOW);
  digitalWrite(segF, LOW);
  digitalWrite(segG, LOW);
}
void acende6()
{
  digitalWrite(segE, LOW);
  digitalWrite(segD, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segB, HIGH);
  digitalWrite(segA, LOW);
  digitalWrite(segF, LOW);
  digitalWrite(segG, LOW);
}
void acende7()
{
  digitalWrite(segE, HIGH);
  digitalWrite(segD, HIGH);
  digitalWrite(segC, LOW);
  digitalWrite(segB, LOW);
  digitalWrite(segA, LOW);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, HIGH);
}
void acende8()
{
  digitalWrite(segE, LOW);
  digitalWrite(segD, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segB, LOW);
  digitalWrite(segA, LOW);
  digitalWrite(segF, LOW);
  digitalWrite(segG, LOW);
}
void acende9()
{
  digitalWrite(segE, HIGH);
  digitalWrite(segD, LOW);
  digitalWrite(segC, LOW);
  digitalWrite(segB, LOW);
  digitalWrite(segA, LOW);
  digitalWrite(segF, LOW);
  digitalWrite(segG, LOW);
}

Possíveis erros

Caso o projeto não funcione, verifique alguns dos possíveis erros:

  • Caso o display não acenda nenhum LED, verifique a ligação do pino comum;
  • Caso o display não acenda algum segmento, verifique a ligação desse segmento;
  • Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
  • Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
  • Verifique se o código carregou na placa através da IDE Arduino.

Desafios

Veja abaixo alguns desafios que você pode tentar!

  • Modifique o tempo de exibição entre um número e outro mudando os valores em delay(1000); por exemplo delay(350);
  • Modifique a sequência de exibição dos números fazendo uma contagem regressiva;
  • Desenhe letras no display criando novas funções para elas. Por exemplo a letra A:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void acendeA()
    {
      digitalWrite(segE, LOW);
      digitalWrite(segD, HIGH);
      digitalWrite(segC, LOW);
      digitalWrite(segB, LOW);
      digitalWrite(segA, LOW);
      digitalWrite(segF, LOW);
      digitalWrite(segG, LOW);
    }


Zuletzt geändert: Sonntag, 14. April 2019, 15:10