Início
/
Projetos Arduino
/
Projetos Squids
/
Básico
/
Projeto 59 - Contador de cliques com display 7 segmentos - Arduino
Projeto 59 - Contador de cliques com display 7 segmentos - Arduino
Angelo Luis Ferreira | 11/07/2019
Acessos: 31.910
Básico - Projeto 59
Contador de cliques com display 7 segmentos
Objetivo
Neste projeto vamos criar um contador de cliques usando um display de 7 segmentos e dois botões. O programa inicia no número zero. Ao clicar no botão direito, incrementa em +1 o valor no display. Ao clicar no botão esquerdo, decrementa -1 o valor no display.
Definições
1. Neste projeto você poderá utilizar um display catodo comum ou anodo comum.
2. Antes de iniciar este projeto, recomendo que veja os seguintes tutoriais: Projeto 54 - Usando display 7 segmentos com Arduino e Projeto 55 - Usando display 7 segmentos com Arduino (código otimizado).
Display de 7 segmentos: é um componente eletrônico utilizado para apresentar informações visuais. Possui apenas 1 dígito, formado por 7 segmentos de leds acionados de forma independente mais o led do ponto que fica no canto inferior direito do display.
Desta forma é possível formar caracteres de 0 a 9, hexadecimais de A a F, e algumas letras do alfabeto latino. O display e formado pelo arranjo de LEDs (diodos emissores de luz) encapsulados em um invólucro apropriado, controlados individualmente, que podem estar acesos ou apagador, formando assim o caractere desejado. É possível encontrar no mercado, displays de catodo comum e de anodo comum.
Aplicação
Para fins didáticos e projetos com relógios digitais e equipamentos com contadores.
Componentes necessários
Referência
|
Componente
|
Quantidade
|
Imagem
|
Observação
|
Protoboard |
Protoboard 830 pontos |
1 |
|
No mínimo utilizar protoboard com 830 pontos
|
Jumpers |
Kit cabos ligação macho / macho |
1 |
|
|
Display de 7 segmento |
Display de 7 segmentos (catodo comum) |
1 |
|
Somente utilizar display catodo comum com CD4511.
O display poderá ser de qualquer cor.
(datasheet)
|
Resistor |
Resistor |
1 |
|
1 Resistor de 150Ω ou superior
|
Push Button |
Push button 6X6X5mm |
1 |
|
|
Arduino UNO R3 |
Arduino UNO |
1 |
|
Você poderá utilizar uma placa Arduino UNO original ou similar
|
Montagem do Circuito
Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.
Montagem com display 7 segmentos (catodo comum) - Simulação
Atenção
1. Conheça a disposição dos pinos do display:
2. Faça a ligação do display com o arduino conforme a tabela abaixo:
ARDUINO |
DISPLAY 7 SEGMENTOS |
SEGMENTOS |
Pino 2 |
Pino 7 |
A |
Pino 3 |
Pino 6 |
B |
Pino 4 |
Pino 4 |
C |
Pino 5 |
Pino 2 |
D |
Pino 6 |
Pino 1 |
E |
Pino 7 |
Pino 9 |
F |
Pino 8 |
Pino 10 |
G |
Pino 9 |
Pino 5 |
DP (PONTO) - opcional |
3. Para a montagem do circuito é necessário saber se o display de 7 segmentos utilizado é catodo comum ou anodo comum. Esta informação você poderá obter no momento da compra do componente ou através da datasheet do mesmo.
2. Se você não possui a datasheet e não sabe se o display é catodo comum ou anodo comum, veja a seguir como identificar um display de 7 segmentos:
2.1. Conecte o pino 8 (ou o pino 3) do display de 7 em uma fonte de 3,3V ou 5V (colocar um resistor de 150 ohms ou superior em série) e o pino 5 ao terra (por exemplo, o GND do Arduino). Veja a montagem abaixo:
2.2. Se tivermos um display de 7 segmentos anodo comum o led do ponto, como mostra a figura acima, se acenderá.
2.3. Se tivermos um display de 7 segmentos catodo comum o led não acenderá (lembre-se de que, em um led, a corrente flui em um única direção, ou seja, o led possui polaridade).
3. Agora que já foi identificado o componente display catodo comum, vamos entender como funciona o display de 7 segmentos.
3.1. Como já vimos, o display de 7 segmentos é formado por leds dos 7 segmentos e do ponto. De acordo com a imagem abaixo, observe que os pinos 3 e 8 são referentes à conexão do display com o Vcc (5V) ou (3,3V) do Arduino para display anodo comum e com o GND do Arduino para display catodo comum. Já os demais pinos são referentes aos leds dos segmentos A, B, C, D, E, F, G e DP (ponto):
Portanto, o pino 1 controla o segmento E do display, o pino 2 o segmento D e assim por diante. Desta forma se quisermos mostrar o número 1, por exemplo, deveremos ligar apenas os segmentos B e C. Portanto, a combinação de de 0's e 1's na entrada do display representam os número e letras visualizados. Veja abaixo a combinação dos bits que formarão os decimais:
Agora, veja a combinação dos bits que formarão as letras:
3.2. Para ligarmos os leds do display catodo comum ou anodo comum, precisaremos conectar os pinos 3 ou o 8 na porta GND do Arduino:
Display Catodo Comum: Acionar por nível lógico alto em cada segmento, ou seja, HIGH ou 1. Os pinos 3 ou o 8 deverão estar conectados no GND do Arduino.
Atenção: A ligação entre o display e o GND do Arduino deve ser precedida de um resistor para evitar danos aos leds do componente.
Display Anodo Comum: Acionar por nível lógico baixo em cada segmento, ou seja, LOW ou 0. Os pinos 3 ou o 8 deverão estar conectados no Vcc (5V) do Arduino.
Atenção: A ligação entre o display e o Vcc do Arduino deve ser precedida de um resistor para evitar danos aos leds do componente.
4. Para calcular o valor do resistor necessário para o nosso componente vamos utilizar a lei de Ohm, sendo:
4.1. Dados do display do nosso exemplo (valores retirados da datasheet do componente utilizado):
- Tensão direta: 2,2 V (p/ segmento)
- Corrente máxima: 30 mA (p/ segmento)
4.2. Desta forma, utilizando-se a tensão de 5,0V do Arduino, teremos:
R = (5,0V - 2,2V) / 0,03A => R = 93,33 Ω => Portanto, por segurança, utilizaremos um resistor de no mínimo 150 Ω.
4.3 . Se você não tiver os dados do componente, utilize um resistor maior que 150 Ω. Lembre-se, quanto maior o valor do resistor menor será a intensidade do brilho dos leds do display.
Atenção: Para evitar danos no componente, não utilize resistores menores que 150 Ω. Para saber mais como calcular o resistor, leia Teste 02 - Leds ligados em série e em paralelo.
5) Para otimizarmos o código deste projeto vamos utilizar uma matriz (array multidimensional) condicionando os dígitos de 0 a 9 com os segmentos de led do display. Portanto, o array multidimensional deverá ser definido como:
byte displaySeteSeg[10][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,0 }, //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
};
Atenção: Observe que os valores de "l" e "d" devem ser 0 ou 1, dependendo do display utilizado (catodo comum ou anodo comum).
6) Veja abaixo como realizamos a montagem do nosso projeto utilizando um protoboard. Observe que utilizamos um display catodo comum e ligamos o pino 8 no GND do Arduino.
Sketch do projeto
1. Faça o dowload e abra o arquivo projeto59.ino no IDE do Arduino: DOWNLOAD - projeto59.ino
ATENÇÃO: O código apresentado foi desenvolvido para um display catodo comum. Para alterar o projeto para um display anodo comum, altere as linhas 10 e 11, colocando as duas barras de comentários na linha 10 e retirando as 2 barras da linha 11. Também não esqueça de alterar o circuito, conectando o pino 3 do display no Vcc (5V) do Arduino.
Ou se preferir, copie e cole o código abaixo no IDE do Arduino:
/*******************************************************************************
*
* Projeto 59: Contador de cliques com display 7 segmentos - Arduino
* http://squids.com.br/arduino
*
*******************************************************************************/
// Variaveis liga e desliga p/ display 7 segmentos
const int l = 1, d = 0; // Display 7 segmentos (catodo comum)
//const int l = 0, d = 1; // Display 7 segmentos (anodo comum)
byte displaySeteSeg[10][7] = {
{ l,l,l,l,l,l,d }, //DIGITO 0
{ d,l,l,d,d,d,d }, //DIGITO 1
{ l,l,d,l,l,d,l }, //DIGITO 2
{ l,l,l,l,d,d,l }, //DIGITO 3
{ d,l,l,d,d,l,l }, //DIGITO 4
{ l,d,l,l,d,l,l }, //DIGITO 5
{ l,d,l,l,l,l,l }, //DIGITO 6
{ l,l,l,d,d,d,d }, //DIGITO 7
{ l,l,l,l,l,l,l }, //DIGITO 8
{ l,l,l,d,d,l,l } //DIGITO 9
};
byte btesq=12; // botão decremento (esquerda)
byte btdir=11; // botão incremento (direita
int number = 0; // número a ser mostrado no display deve ser int (inteiros posit. e negat.)
void setup(){
for (int i = 2; i < 10; i++)
{
pinMode(i, OUTPUT); //conexão pinos dos 7 segmentos + o ponto
}
pinMode(btesq, INPUT_PULLUP);
pinMode(btdir, INPUT_PULLUP);
}
void loop() {
if (digitalRead(btdir) == 0 ){ // verifica se o botão direito foi acionado
number += 1;
while (digitalRead(btdir) == 0) {} // loop vazio - aguarda soltar o botão (evita a númeração constante
}
if (!digitalRead(btesq)){ // verifica se o esquerdo foi acionado
number -= 1;
while (!digitalRead(btesq)) {} // loop vazio - aguarda soltar o botão (evita a númeração constante
}
// reseta em caso de estouro (<0 ou >9)
if (number < 0) {number = 9;}
if (number > 9) {number = 0;}
// mostra o número no display
for (int j = 2; j < 9; j++) {
digitalWrite(j, displaySeteSeg[number][j-2]);
}
delay(150); // evitar que o botão seja acionado em um mesmo clique
}
ATENÇÃO: Se o display não acender verifique todas as conexões dos segmentos.
Vídeo
Como o projeto deve funcionar
1. Ao iniciar o programa, o display irá mostrar o número 0.
2. Ao pressionar o botão direito o valor do display será incrementado em +1.
3. Ao clicar o botão esquerdo, valor do display será decrementado em -1.
4. Quando o valor for maior que nove, o display retornará ao valor 0.
5. Da mesma forma, quando e quando o valor for menor que 0, o display retornará 9 sem interromper a contagem.
Desafios
Com base neste projeto, resolva o seguinte desafio: Desafio 46
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários