Projeto 58 - Sorteio de 0 a 9 usando display 7 segmentos e decodificador CD4511 - Arduino

Básico - Projeto 58

Roleta eletrônica com display 7 segmentos controlado pelo decodificador CD4511

Objetivo

Neste projeto vamos criar uma "roleta eletrônica" para sortear números de 0 a 9. Neste tutorial iremos utilizar um display de leds 7 segmentos decodificado pelo circuito integrado CD4511. O projeto irá mostrar os números de 0 a 9  aleatórios e o sorteio acontece quando se aperta o botão. Lembre-se, quando usamos o CI CD4511 é necessário a utilização de um display de 7 segmentos catodo comum.

Definições

1. Para utilizarmos um display anodo comum é necessário acrescentar transistores ou operadores lógicos nas saídas dos pinos do CD4511, que ao meu ver, inviabilizaria a sua aplicação.

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).

3. Se você não possui o codificador CD4511, poderá adaptar facilmente o projeto para a utilização do display 7 segmentos sem o uso do decodificador. Portanto, fica aí mais um desafio para você!

CD4541 é um circuito integrado que atua como um decodificador BCD-8421 (Binary-Coded Decimal) para display 7 segmentos. O CD4541 utiliza 4 entradas e 7 saídas que controlam os leds dos segmentos do display.

A vantagem de se usar o decodificador CD4511 é que ele utiliza somente 4 portas digitais do Arduino, tornando o circuito mais simples e deixando mais portas livres para uso de outros componentes como sensores, atuadores, módulos, etc

Decodificadores: Os decodificadores, são circuitos que servem para fazer a conversão entre dois tipos de codificação diferentes. Há muitos códigos utilizados na eletrônica digital, e entre eles podemos destacar: BCD-8421 código Gray, código Jonhson, código ASCII e uma outra infinidade de códigos. Portanto utilizamos o CD4511 para converter um número binário em uma representação decimal.

Código BCD 8421 (de Binary-coded decimal 8421) é um sistema de codificação de números decimais em binários de quatro bits. Os valores 8421 são respectivamente os valores de 2 elevado ao valor de sua posição (3,2,1,0). Este código assume apenas 10 dígitos, variando de 0 a 9. Portanto, utilizaremos esta configuração para definirmos os números decimais do nosso projeto.

 

Números binários: Na eletrônica digital o sistema de numeração binário é muito utilizado no lugar do sistema decimal. Isto ocorre devido aos circuitos digitais se basearem em níveis lógicos que são diferenciados pelo nível de tensão que tem em um pino. Níveis lógicos podem ser definidos com "0" e "1", TRUE ou FALSE e ainda HIGH e LOW.

Os níveis lógicos acima não indicam o nível de tensão que tem no pino e sim, o modo como o circuito compreende a tensão que esta sendo aplicada. Por exemplo, o nível lógico 0 para o Arduino é 0 Volts, mas o nível lógico 1 é 5 Volts no pino. A voltagem deste níveis lógicos depende da tecnologia (TTL, CMOS, RTL, DTL) e do circuito que esta sendo usado.

Obs.: Não se preocupe agora com os termo decodificadores, BCD 8421 ou CMOS, pois eles serão mais aprofundados futuramente em projetos de eletrônica mais avançados.

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 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 830 pontos

Jumpers Kit cabos ligação macho / macho 1  
CD 4511 CI CD4511 1

Utilizamos o CD4511BE da Texas Instruments

(datasheet)

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. Como já mencionamos acima, devemos utilizar o CD4511 preferencialmente com um display de 7 segmentos catodo 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. Conheça a disposição dos pinos do display:

Display 7 segmentos catodo comum

2.2. 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.3. Se tivermos um display de 7 segmentos anodo comum o led do ponto, como mostra a figura acima, se acenderá.

2.4. 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 um pouquinho 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, precisaremos conectar os pinos 3 ou o 8 na porta 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.

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. Agora vamos definir a montagem mais importante do projeto que é a conexão do decodificador CD4511. Lembre-se, o CD4511 irá converter números binários para números decimais (números) ou hexadecimais (números e letras).

5.1. Primeiro devemos prestar a atenção como o componente deverá ser conectado no protoboard em relação ao Arduino:

 

5.2. Lembre-se, o componente lógico CD4511 irá converter números binários para números decimais (números) ou hexadecimais (números e letras). Veja como fica esta conversão na "tabela verdade" abaixo:

 

5.3. Para fazermos as conexões precisamos conhecer a disposição dos pinos de entrada (inputs) e saída (outputs) do CD4511:

Obs.: Observe que os pinos de entrada 1,2,6 e 7 (BCDA) vão conectados na saída do Arduino e os pinos de 9 a 15 vão conectados no display 7 segmentos. No nosso projeto vamos conectar os pinos 3, 4 e 16 no VCC (+5V) e o pino 8 no GND do Arduino.

5.4. De acordo com as informações acima, definimos no nosso projeto as conexões do decodificador CD4511 com o Arduino e com o display 7 segmentos catodo comum, sendo:

Conexão do CD4511 com o Arduino:

CD4511 CD4511 (BCD inputs)
ARDUINO
Pino 1 B 5
Pino 2 C 6
Pino 6 C 7
Pino 7 A 4
Pinos 3, 4 e 16 - +5V (Vcc)
Pinos 5 e 8 - GND (-)

Conexão do CD4511 com o display 7 segmentos catodo comum

CD4511 DISPLAY CATODO COMUM
SEGMENTOS
Pino 9 Pino 1 E
Pino 10 Pino 2 D
Pino 11 Pino 4 C
Pino 12 Pino 6 B
Pino 13 Pino 7 A
Pino 14 Pino 10 G
Pino 15 Pino 9 F

Display 7 segmentos catodo comum

6) Para otimizarmos o código deste projeto vamos utilizar uma matriz (array multidimensional) condicionando os dígitos de 0 a 9 com os valores binários que serão convertidos pelo decodificador CD4511. Portanto, o array multidimensional deverá ser definido como:

byte displaySeteSeg[10][4] = { 
 { 0,0,0,0 },  //DIGITO 0
 { 1,0,0,0 },  //DIGITO 1
 { 0,1,0,0 },  //DIGITO 2
 { 1,1,0,0 },  //DIGITO 3
 { 0,0,1,0 },  //DIGITO 4
 { 1,0,1,0 },  //DIGITO 5
 { 0,1,1,0 },  //DIGITO 6
 { 1,1,1,0 },  //DIGITO 7
 { 0,0,0,1 },  //DIGITO 8
 { 1,0,0,1 }  //DIGITO 9
};

 Atenção: Observe que os valores binários devem seguir a ordem A, B, C, D da tabela verdade que mostramos acima.

7) 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 projeto58.ino no IDE do Arduino:  DOWNLOAD - projeto58.ino

Ou se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*    Projeto 58: Sorteio de 0 a 9 - display 7 segmentos - Arduino
*                 http://squids.com.br/arduino                
*
*******************************************************************************/
byte displaySeteSeg[10][4] = { 
 { 0,0,0,0 },  //DIGITO 0
 { 1,0,0,0 },  //DIGITO 1
 { 0,1,0,0 },  //DIGITO 2
 { 1,1,0,0 },  //DIGITO 3
 { 0,0,1,0 },  //DIGITO 4
 { 1,0,1,0 },  //DIGITO 5
 { 0,1,1,0 },  //DIGITO 6
 { 1,1,1,0 },  //DIGITO 7
 { 0,0,0,1 },  //DIGITO 8
 { 1,0,0,1 }  //DIGITO 9
};

byte botao=12;
 
void setup(){
  for (int i = 4; i < 8; i++)
  {
    pinMode(i, OUTPUT);
  }

  pinMode(botao, INPUT_PULLUP);
}

void loop() {

  //Geração de numero aleatorios de 0 a 9
  long n = random(0, 10);
  numero_display(n);
  delay(50);

   //Se o botão foi pressionado…
  if (!digitalRead(botao)) {
    delay(500);
    //O processo do arduino é interrompido e o display mostra o numero sorteado.    
    while (digitalRead(botao)) {
      } // loop vazio faz com que o programa interropa o processo até sair da condição, ou seja, pressionar o botão
    delay(400); // Delays são usados para que de tempo para a informação do botão ser lida apenas uma vez. 
  }
}

// função para mostrar número
void numero_display(int m) {

  for (int j = 4; j < 8; j++) {
    digitalWrite(j, displaySeteSeg[m][j-4]);
  }
}

ATENÇÃO: Se o display não acender verifique todas as conexões dos segmentos. Lembre-se, o projeto só vai funcionar corretamente com display catodo comum.

Vídeo


Simulação

Como o projeto deve funcionar

1. Ao iniciar o programa, o display irá mostrar os números de 0 a 9 aleatoriamente.

2.  Para sortear um número basta clicar uma vez o botão.

3. Clique novamente no botão para sortear outro número.

Desafios

Com base neste projeto, resolva o seguinte desafio:  Desafio 45

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores