Contador digital
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.
No display existem 8 LEDs, sendo um para cada segmento (traço) e mais um para o ponto.
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:12345678910
void
acendeA()
{
digitalWrite(segE, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}