Você está na página 1de 6

Curso: Engenharia Elétrica / Computação Disciplina: Lab.

Integrado de Microcontroladores e Automação


Período: 5º , 6º , 7º e 8º Semestre: 2019/2 Data: 22 / 08 / 2019
Contador Numérico no Arduino

Introdução

Os sistemas embarcados são compostos de duas partes: uma refere-se ao hardware do circuito e outra refere-se
ao software que gerenciamento do hardware. No Arduino podemos projetar sistemas embarcados porque permite
a implementação dessas duas partes com grande facilidade. Nessa atividade vamos construir um contador
numérico bem simples com o uso de componentes eletrônicos comuns como display de 7 segmentos, leds e botões.

Objetivo

Essa atividade tem como objetivo implementar um projeto Arduino que funcione como um contador numérico
utilizando um display de 7 segmentos, um conjunto de 4 led’s e um botão para controle da contagem.

1. O Display de 7 segmentos

Nessa prática vamos utilizar um display de 7 segmentos para fazermos um contador numérico. Segundo o
Wikipédia:

“Um display de sete segmentos, como seu nome indica, é composto de sete elementos, os quais
podem ser ligados ou desligados individualmente. Eles podem ser combinados para produzir
representações simplificadas de algarismos arábicos.
Frequentemente, os sete segmentos são dispostos de forma oblíqua ou
itálica, ou verde, o que melhora a legibilidade.
Os sete segmentos são dispostos num retângulo com dois
segmentos verticais em cada lado e um segmento horizontal em
cima e em baixo. Em acréscimo, o sétimo segmento bissecta o
retângulo horizontalmente. Também existem displays de quatorze
segmentos e de dezesseis segmentos (para exibição plena de
caracteres alfanuméricos) todavia, estes têm sido substituídos em sua
maioria por displays de matriz de pontos. Os segmentos de um display de sete segmentos são
definidos pelas letras de A a G, conforme indicado à direita, onde o ponto decimal opcional DP (um
"oitavo segmento") é usado para a exibição de números não-inteiros.”
Existem dois tipos de displays de sete segmentos, classificados de acordo com a forma como são conectados:
Cátodo comum e Ânodo comum.

Em um display de Cátodo Comum os cátodos de todos os LEDs (segmentos) são conectados juntos ao terminal
terra. Ele é acionado por nível lógico alto em cada segmento.

Um display de ânodo comum possui os ânodos de todos os segmentos conectados juntos ao terminal VCC, sendo
acionados por nível lógico 0 em cada segmento.

Prof. Oscar K. Uehara – oscar.uehara@unisantanna.br 22-Ago-2019 1


Curso: Engenharia Elétrica / Computação Disciplina: Lab. Integrado de Microcontroladores e Automação
Período: 5º , 6º , 7º e 8º Semestre: 2019/2 Data: 22 / 08 / 2019
Contador Numérico no Arduino

Como cada segmento, por ser visto como um LED


individual, necessita de uma corrente entre 10 e 20mA
para acender, assim, devemos dimensionar corretamente
o circuito que irá alimentar o display, para que os
segmentos sejam alimentados com corrente elétrica
suficiente para seu acionamento.

Para acionar um display de 7 segmentos utilizamos


componentes discretos, circuitos integrados lógicos ou um
microcontrolador. Nesse TDE iremos implementar um
contador numérico usando o Arduino, onde cada pino de
saída digital do microcontrolador aciona um dos
segmentos do display.

Veja acima um esquema de ligação entre um Arduino UNO e um display de 7 segmentos. Note que existe um
resistor conectado entre cada pino do microcontrolador e os segmentos do display, utilizados para limitar a
corrente em cada LED, evitando que se danifiquem. No diagrama mostrado são utilizados 8 resistores, pois esse
display possui, além dos sete segmentos numéricos, um segmento extra para representar o ponto decimal.

Prática 1: Ligando e testando o display de 7 segmentos

Para essa prática vamos precisar dos seguintes materiais:


• Microcontrolador Arduino UNO (ou compatíveis)
• 1 display de 7 segmentos de cátodo comum
• 8 resistores de 220 Ω
• Jumpers

Segue abaixo o esquema de ligações no Arduino:

Prof. Oscar K. Uehara – oscar.uehara@unisantanna.br 22-Ago-2019 2


Curso: Engenharia Elétrica / Computação Disciplina: Lab. Integrado de Microcontroladores e Automação
Período: 5º , 6º , 7º e 8º Semestre: 2019/2 Data: 22 / 08 / 2019
Contador Numérico no Arduino

Note que associamos os pinos digitais do Arduino com os terminais do display de 7 segmentos de acordo com a
tabela descrita na figura. Não estamos utilizando o terminal de ponto decimal do display.

Após terminar as ligações, escreva o código fonte em C para o projeto Arduino como segue abaixo ou copie o
projeto no site da TinkerCad. Para isso, deve abrir um cadastro no site e, em seguida, poderá ver, copiar e simular
o projeto pelo link:

https://www.tinkercad.com/things/fBmLePFZ1AC
1 #define pinoA 2
2 #define pinoB 3
3 #define pinoC 4
4 #define pinoD 5
5 #define pinoE 6
6 #define pinoF 7
7 #define pinoG 8
8
9 int pinosDisplay[]={ 2, 3, 4, 5, 6, 7, 8 };
10 int bcd[10][8] = {
11 { 1, 1, 1 , 1 , 1 , 1 , 0 }, //0
12 { 0, 1, 1 , 0 , 0 , 0 , 0 }, //1
13 { 1, 1, 0 , 1 , 1 , 0 , 1 }, //2
14 { 1, 1, 1 , 1 , 0 , 0 , 1 }, //3
15 { 0, 1, 1 , 0 , 0 , 1 , 1 }, //4
16 { 1, 0, 1 , 1 , 0 , 1 , 1 }, //5
17 { 1, 0, 1 , 1 , 1 , 1 , 1 }, //6
18 { 1, 1, 1 , 0 , 0 , 0 , 0 }, //7
19 { 1, 1, 1 , 1 , 1 , 1 , 1 }, //8
20 { 1, 1, 1 , 0 , 0 , 1 , 1 } //9
21 };
22
23 void escreveDisplay( int x ){
24 digitalWrite(pinoA, bcd[x][0]);
25 digitalWrite(pinoB, bcd[x][1]);
26 digitalWrite(pinoC, bcd[x][2]);
27 digitalWrite(pinoD, bcd[x][3]);
28 digitalWrite(pinoE, bcd[x][4]);
29 digitalWrite(pinoF, bcd[x][5]);
30 digitalWrite(pinoG, bcd[x][6]);
31 }
32
33 void apagaDisplay( ){
34 digitalWrite(pinoA, LOW );
35 digitalWrite(pinoB, LOW );
36 digitalWrite(pinoC, LOW );
37 digitalWrite(pinoD, LOW );
38 digitalWrite(pinoE, LOW );
39 digitalWrite(pinoF, LOW );
40 digitalWrite(pinoG, LOW );
41 }
42
43 void setup()
44 {
45 int i;
46 for( i = 0; i < 7; i++)
47 pinMode(pinosDisplay[i], OUTPUT);
48 }
49

Prof. Oscar K. Uehara – oscar.uehara@unisantanna.br 22-Ago-2019 3


Curso: Engenharia Elétrica / Computação Disciplina: Lab. Integrado de Microcontroladores e Automação
Período: 5º , 6º , 7º e 8º Semestre: 2019/2 Data: 22 / 08 / 2019
Contador Numérico no Arduino

50 void loop()
51 {
52 int i;
53 for( i = 0; i < 10; i++ ){
54 escreveDisplay(i);
55 delay(1000);
56 apagaDisplay();
57 delay(1000);
58 }
59 }

Execute a simulação ou carregue o programa no Arduino e execute o circuito. Note que o display começa mostrando
uma contagem de 0 a 9 e repetindo seguidamente. O dígito se mostra por 1 segundo e depois se apaga por 1
segundo, antes de mostrar o próximo dígito. Após observar os resultados, responda as questões.

Questões:

1. Explique o significado das matrizes pinosDisplay[] e bcd[][]?


2. Reescreva as funções escreveDisplay() e apagaDisplay() de modo que executem a mesma tarefa e com
menos linhas de código. Dica: use o comando for.
3. Modifique a função loop de modo que a contagem alterne de crescente para decrescente, isto é, após a
primeira contagem em ordem crescente, a próxima seja em ordem decrescente e depois volte a crescente
novamente, alternando a ordem a cada contagem.

Prática 2: Ligando o display de 7 segmentos e um grupo de leds

Para essa prática vamos precisar dos seguintes materiais:


• Microcontrolador Arduino UNO (ou compatíveis)
• 1 display de 7 segmentos de cátodo comum
• 12 resistores de 220 Ω
• 4 leds
• Jumpers

O esquema de ligações no Arduino para essa prática parte do esquema da prática anterior. Vamos acrescentar mais
quatro leds (as cores podem ser variadas) e resistores associados ligando nos pinos 10, 11, 12 e 13. Esses leds
servirão de contador BCD associado ao display de 7 segmento e cada dígito que o display mostrar, deve ser
mostrado nos leds na forma binária. O bit 0 representa o led apagado, o bit 1 o led aceso.

O esquema de ligações é:

Prof. Oscar K. Uehara – oscar.uehara@unisantanna.br 22-Ago-2019 4


Curso: Engenharia Elétrica / Computação Disciplina: Lab. Integrado de Microcontroladores e Automação
Período: 5º , 6º , 7º e 8º Semestre: 2019/2 Data: 22 / 08 / 2019
Contador Numérico no Arduino

O led_0 representa o bit menos significativo e o led_3 o bit mais significativo. A distribuição de pinos para as saídas
digitais do Arduino estão descritas no código fonte em C abaixo:

1 #define pinoA 2
2 #define pinoB 3
3 #define pinoC 4
4 #define pinoD 5
5 #define pinoE 6
6 #define pinoF 7
7 #define pinoG 8
8
9 #define led_0 10
10 #define led_1 11
11 #define led_2 12
12 #define led_3 13

Questões:

4. A partir do projeto desenvolvido na prática 1, faça as modificações necessárias para que o novo circuito
conte de 0 a 9, descrevendo a contagem no display de 7 segmentos e no grupo de leds na forma binária,
simultaneamente.

Prática 3: Ligando o display de 7 segmentos, um grupo de leds e um botão

Acrescente um botão no esquema da prática 2 e ligue no pino 9 do Arduino. Modifique o programa para que a
contagem do display e do grupo de leds seja controlado pelo botão. Assim:

• No início, o display e os leds estão apagados.


• Quando o botão é pressionado pela primeira vez, o display e o grupo de leds mostram o número 0 (zero)
que fica aceso por 1 segundo e depois se apaga;
• Quando o botão é pressionado pela segunda vez, o número 1 (um) aparece por mais 1 segundo e depois se
apaga;

Prof. Oscar K. Uehara – oscar.uehara@unisantanna.br 22-Ago-2019 5


Curso: Engenharia Elétrica / Computação Disciplina: Lab. Integrado de Microcontroladores e Automação
Período: 5º , 6º , 7º e 8º Semestre: 2019/2 Data: 22 / 08 / 2019
Contador Numérico no Arduino

• Quando o botão é pressionado pela terceira vez, o número 2 (dois) aparece por mais 1 segundo e depois
se apaga;
• E assim, sucessivamente, ou seja, cada vez que o botão é pressionado, o número que aparece é uma
unidade a mais que o anterior por 1 segundo e depois se apaga.
• Após o número 9 (nove), a contagem volta para 0 (zero).

Questões:

5. Faça as modificações necessárias a partir do esquema da prática 2 para implementar as funções descritas
acima.
6. Faça uma nova alteração no projeto de modo que a contagem seja em hexadecimal, de 0 a F.

Referências Bibliográficas

Sites da internet:

• http://www.bosontreinamentos.com.br/eletronica/arduino/como-usar-um-display-de-led-de-sete-
segmentos-com-arduino/

• http://www.bosontreinamentos.com.br/eletronica/eletronica-digital/como-funciona-um-display-de-leds-
de-7-segmentos/

Prof. Oscar K. Uehara – oscar.uehara@unisantanna.br 22-Ago-2019 6

Você também pode gostar