Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
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
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:
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 é:
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.
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:
• 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/