Índice:

Módulos de exibição de LED Arduino e TM1638: 11 etapas
Módulos de exibição de LED Arduino e TM1638: 11 etapas

Vídeo: Módulos de exibição de LED Arduino e TM1638: 11 etapas

Vídeo: Módulos de exibição de LED Arduino e TM1638: 11 etapas
Vídeo: Tutorial Arduino - Bargraph LEDS #5 2024, Novembro
Anonim
Módulos de display LED Arduino e TM1638
Módulos de display LED Arduino e TM1638

Se você precisa de uma maneira rápida e fácil de adicionar alguma entrada e saída do usuário a um projeto, esses módulos de exibição são interessantes e divertidos.

Eles contêm oito dígitos de LED vermelhos de 7 segmentos, oito LEDs vermelhos / verdes e também oito botões para entrada do usuário. As unidades também podem ser conectadas em série, permitindo até cinco de uma vez, e um cabo curto acompanha cada módulo, além de alguns espaçadores e parafusos curtos, conforme mostrado na imagem.

Passo 1:

Imagem
Imagem

Os espaçadores são longos o suficiente para elevar o PCB acima de uma superfície, no entanto, para montar as placas em qualquer lugar útil, você precisaria de placas mais longas. Você também pode remover os soquetes IDC se quiser montar o módulo próximo à superfície de um painel. Esta seria uma tarefa simples de dessoldar, uma vez que são tomadas através de orifícios.

Passo 2:

Imagem
Imagem

A placa é controlada por um TM1638 IC.

Este é um LED e um driver de interface IC da “Titan Micro Electronics“. Você também pode comprar esses ICs da PMD Way. Você também pode baixar a folha de dados para obter mais detalhes.

Etapa 3: Primeiros passos - Hardware

Primeiros passos - Hardware
Primeiros passos - Hardware

Hardware - a conexão a uma placa compatível com o Arduino (ou outro MCU) é bastante simples. As pinagens são mostradas na parte traseira do PCB e combinam com o encaixe do cabo plano. Se você olhar para o final do cabo como tal.

O furo superior direito é o pino um, com o pino superior esquerdo sendo o pino dois, o pino inferior direito nove e o pino inferior esquerdo dez. Portanto, as pinagens são:

  1. Vcc (5V)
  2. GND
  3. CLK
  4. DIO
  5. STB1
  6. STB2
  7. STB3
  8. STB4
  9. STB5
  10. não conectado.

Para uso do Arduino, os pinos 1 ~ 4 são o mínimo necessário para usar um módulo. Cada módulo adicional exigirá outro pino digital conectado a STB2, STB3, etc. Mais sobre isso posteriormente. Observe que cada módulo configurado para brilho total com cada LED ligado consome 127mA, portanto, seria sábio usar alimentação externa com mais de um módulo e outras conexões com placas Arduino.

Etapa 4: Primeiros passos - Software

Software - baixe e instale a biblioteca T1638 aqui. Obrigado e parabéns a rjbatista do gmail dot com pela biblioteca. Inicializar módulos no esboço é simples. Incluir a biblioteca com:

#incluir

em seguida, use um dos seguintes para cada módulo:

Módulo TM1638 (x, y, z);

x é o pino digital do Arduino conectado ao pino 4 do cabo do módulo, y é o pino digital do Arduino conectado ao pino 3 do cabo do módulo ez é o pino estroboscópico. Portanto, se você tivesse um módulo com dados, relógio e estroboscópio conectado aos pinos 8, 7 e 6, você usaria:

Módulo TM1638 (8, 7, 6);

Se você tivesse dois módulos, com o strobe do módulo um conectado ao Arduino digital 6 e o strobe do módulo dois conectado ao digital 5, você usaria:

Módulo TM1638 (8, 7, 6); módulo TM1638 (8, 7, 5);

e assim por diante para mais módulos. Agora, para controlar a exibição …

Etapa 5: os LEDs bicolores

Os LEDs bicolores
Os LEDs bicolores

Controlar os LEDs vermelho / verde é fácil. Para referência, eles são numerados de zero a sete da esquerda para a direita. Para ligar ou desligar um único LED, use o seguinte:

module.setLED (TM1638_COLOR_RED, x); // define o número do LED x para redmodule.setLED (TM1638_COLOR_GREEN, x); // define o LED número x para verde module.setLED (TM1638_COLOR_RED + TM1638_COLOR_GREEN, 0); // define o número do LED x para vermelho e verde

Usar o método acima pode ser simples, mas um tanto ineficiente. A melhor maneira é abordar todos os LEDs em uma instrução. Para fazer isso, enviamos dois bytes de dados em hexadecimal para o display. O MSB (byte mais significativo) consiste em oito bits, cada um representando um LED verde aceso (1) ou apagado (0). O LSB (byte menos significativo) representa os LEDs vermelhos.

Uma maneira fácil de determinar o valor hexadecimal para controlar os LEDs é simples, a imagem é que você tem uma linha de LEDs - os primeiros oito sendo verdes e os segundos oito sendo vermelhos. Defina cada dígito como 1 para ativado e 0 para desativado. Eles convertem os dois números binários em hexadecimais e usam esta função:

module.setLEDs (0xgreenred);

Onde verde é o número hexadecimal para os LEDs verdes e vermelho é o número hexadecimal para os LEDs vermelhos. Por exemplo, para ligar os três primeiros LEDs como vermelhos e os três últimos como verdes, a representação binária será:

00000111 11100000 que em hexadecimal é E007.

Então, usaríamos:

module.setLEDs (0xE007);

que produz a imagem conforme mostrado acima.

Etapa 6: a tela de 7 segmentos

Para limpar o display numérico (mas não os LEDs abaixo), basta usar:

module.clearDisplay ();

ou para ligar todos os segmentos E todos os LEDs, use o seguinte

module.setupDisplay (verdadeiro, 7); // onde 7 é a intensidade (de 0 ~ 7)

Para exibir números decimais, use a função:

module.setDisplayToDecNumber (a, b, false);

onde a é o inteiro, b é a posição do ponto decimal (0 para nenhum, 1 para o dígito 8, 2, para o dígito 7, 4 para o dígito 6, 8 para o dígito 4, etc), e o último parâmetro (verdadeiro / false) ativa ou desativa os zeros à esquerda. O esboço a seguir demonstra o uso desta função:

#include // define um módulo no pino de dados 8, pino 9 do relógio e pino estroboscópico 7 TM1638 module (8, 9, 7); longo sem sinal a = 1; void setup () {} void loop () {for (a = 10000; a <11000; a ++) {module.setDisplayToDecNumber (a, 4, false); atraso (1); } para (a = 10000; a <11000; a ++) {module.setDisplayToDecNumber (a, 0, true); atraso (1); }}

… Com os resultados mostrados no vídeo.

Etapa 7:

Image
Image

Um dos recursos mais interessantes é a capacidade de rolar o texto em uma ou mais telas. Para fazer isso realmente não precisa de uma explicação como o esboço de demonstração incluído:

tm_1638_scrolling_modules_example.pde

incluído com a biblioteca TM1638 é facilmente seguido. Basta inserir seu texto na string const char , garantir que os módulos estejam conectados de acordo com a definição do módulo no início do esboço e pronto. Para ver os personagens disponíveis, visite a página de funções. Observe que a exibição é de apenas sete segmentos, portanto, alguns caracteres podem não parecer perfeitos, mas no contexto lhe dará uma boa ideia - veja o vídeo nesta etapa.

Etapa 8:

Finalmente, você também pode endereçar individualmente cada segmento de cada dígito. Considere o conteúdo desta matriz:

valores de byte = {1, 2, 4, 8, 16, 32, 64, 128};

cada elemento representa os dígitos 1 ~ 8. O valor de cada elemento determina qual segmento do dígito é ativado. Para os segmentos a ~ f, dp os valores são 1, 2, 4, 6, 16, 32, 64, 128. Portanto, os resultados do uso da matriz acima na seguinte função:

module.setDisplay (valores);

será pela imagem.

Etapa 9:

Imagem
Imagem

Naturalmente, você pode combinar valores para cada dígito para criar seus próprios caracteres, símbolos, etc. Por exemplo, usando os seguintes valores:

valores de byte = {99, 99, 99, 99, 99, 99, 99, 99};

criamos de acordo com a imagem nesta etapa.

Etapa 10: os botões

Os valores dos botões são retornados como um valor de byte da função:

module.getButtons ();

Como existem oito botões, cada um representa um bit de um número binário que é retornado como um byte. O botão à esquerda retorna um decimal, e o direito retorna 128. Ele também pode retornar pressionamentos simultâneos, então pressionar os botões um e oito retorna 129. Considere o seguinte esboço, que retorna os valores dos pressionamentos de botão na forma decimal e, em seguida, exibe O valor que:

#include // define um módulo no pino de dados 8, pino 9 do relógio e pino estroboscópico 7 módulo TM1638 (8, 9, 7); botões de byte; void setup () {} void loop () {buttons = module.getButtons (); module.setDisplayToDecNumber (botões, 0, falso); }

e os resultados no vídeo.

Esses painéis de exibição são úteis e, com sorte, encontram um lar em seus projetos. Esta postagem foi trazida a você por pmdway.com - oferecendo tudo para fabricantes e entusiastas de eletrônicos, com entrega gratuita em todo o mundo.

Recomendado: