Controlador de placa de exibição de token baseado em Arduino

Controlador de placa de exibição de token baseado em Arduino

Você deve ter notado placas de exibição de tokens em muitos lugares, como lojas de alimentos, hospitais, bancos, vários delivery, etc. Os sistemas de exibição de tokens são usados ​​para exibir números de tokens. Como essas placas de exibição mostram informações numéricas, elas são facilmente projetadas usando LEDs de 7 segmentos. Os modelos comerciais usam grandes LEDs de 7 segmentos para exibir números de tokens. É até possível prototipar um modelo usando Arduino.

Neste projeto, projetamos um sistema de exibição de tokens usando a popular placa de prototipagem – o Arduino e LEDs de 7 segmentos. Uma placa de exibição de tokens geralmente requer duas ou três unidades de 7 segmentos. Para multiplexar essas unidades, o IC MAX7219 é usado neste projeto. O Arduino controla a configuração do número do token. Este sistema foi projetado para inicializar os números de token para zero na inicialização. O usuário pode aumentar ou diminuir o número de tokens usando dois botões fornecidos como interface de usuário. O número do token nunca pode ser negativo, portanto o contador do token nunca pode ser decrementado abaixo de zero.

Componentes necessários

  1. Arduino UNO x1
  2. 7 segmentos x3
  3. MAX7219 CI x1
  4. Botões de pressão x2
  5. Tábua de ensaio x1
  6. Fios de jumper ou fios de conexão

Pré-requisitos

  1. Interface de botões com Arduino
  2. Multiplexação de 7 segmentos usando MAX7219

Conexões de Circuito

Projetamos uma placa de exibição de token aqui usando o módulo driver de 7 segmentos baseado em IC MAX7219. MAX7219 é um driver de display LED de cátodo comum de 8 dígitos. Ele permite a interface de um microcontrolador com unidades de display de 7 segmentos de até 8 dígitos. Aqui, usamos apenas 3 dígitos do módulo. No módulo, os pinos de dados dos 7 segmentos são conectados aos pinos SEG A a SEG G e DP do MAX7219. Os terminais de cátodo comum dos segmentos são conectados aos pinos DIG0 a DIG7 do MAX7219. Os pinos 4 e 9 do IC estão conectados ao terra e o pino 19 está conectado ao terminal de 5V. O pino 18 do MAX7219 também está conectado a 5V DC através de um resistor adequado. Os pinos DIN, LOAD e CLK do IC podem ser conectados aos pinos de E/S digital do Arduino.

Exemplo de módulo de 7 segmentos baseado em IC MAX7219.

MAX7219 se comunica com Arduino usando uma interface compatível com SPI. Os pinos DIN, LOAD e CLK do IC são conectados aos pinos 12, 10 e 11 do Arduino UNO. O módulo MAX7219 é fornecido com 5V DC e aterramento do próprio Arduino.

Para a interface do usuário com o sistema de exibição de token, 2 botões fazem interface com o Arduino. Esses botões têm interface nos pinos 7 e 8 do Arduino UNO. Esses pinos do Arduino são puxados internamente. O botão com interface no pino 7 é usado para aumentar o número do token, enquanto o botão com interface no pino 8 é usado para diminuir o número do token.

Diagrama de circuito

Diagrama de circuito do sistema de exibição de token baseado em Arduino.

Esboço do Arduino

Como funciona o circuito

Existem 3 LEDs de 7 segmentos conectados ao IC MAX7219. Esses 7 segmentos exibem o número do token como um número inteiro até casas de centenas. O IC MAX7219 controla os dígitos exibidos nos 7 segmentos. Para isso, são necessários comandos do Arduino através da interface SPI. Existem dois botões conectados ao Arduino. O Arduino é programado de forma que ao pressionar o botão conectado ao pino 7, aumenta o número do token em um. Quando o botão conectado ao pino 8 é pressionado, o número do token diminui em um. A mudança no número do token é refletida imediatamente nos 7 segmentos.

O código

O esboço do Arduino começa importando a biblioteca SPI do Arduino. As variáveis ​​globais são definidas para atribuir números de pinos conectados aos pinos DIN, CLK e LOAD do IC MAX7219. Uma variável do tipo array é definida para armazenar comandos de 16 bits para MAX7219. Uma variável é declarada para armazenar o valor do número do token. O número do token é um número inteiro sem sinal e é inicializado como 0.

Uma tabela de caracteres é armazenada na memória flash do Arduino UNO usando a construção PROGMEM. Esta tabela contém os bytes que devem ser escritos nos segmentos de LED para exibição dos dígitos de 0 a 9.

Uma função spiTransfer é definida como a função shiftOut para transferir dados de 16 bits para o IC MAX7219. Cada dado de 16 bits contém dois bytes, o primeiro byte é o endereço do registrador MAX7219 e o segundo byte são os dados a serem gravados em um registrador selecionado. Ambos os bytes são passados ​​como argumentos para esta função definida pelo usuário.

É definida uma função clearDisplay , na qual a função spiTransfer é usada para escrever 0x00 em todos os registradores de dígitos, limpando todos os dígitos. Uma função shutdown é definida, que usa a função spiTransfer para gravar dados no registro do modo de desligamento do MAX7219.

Uma função init_7seg é definida para inicializar a exibição. Na função, primeiro, os pinos MOSI, SCLK e CS são configurados para saída digital. O pino CS está definido como HIGH para selecionar MAX7219 no barramento SPI. Um valor de 0x00 é transferido para o registro de teste de exibição (endereço de registro 15 ou 0x0F) usando a função spiTransfer para definir MAX7219 para o modo normal. Um valor de 0x07 é transferido para o registro de limite de varredura (endereço de registro 11 ou 0x0B), permitindo todos os 8 dígitos. Um valor de 0x00 é transferido para o registro do modo de decodificação (endereço de registro 9 ou 0x09) para selecionar nenhuma decodificação para todos os dígitos.

É definida uma função setChar que grava um valor em um registrador de dígitos de MAX7219. Tanto o valor quanto o dígito são definidos como parâmetros da função. Nesta função, primeiro é feita uma validação dos dados dos números dos dígitos e do valor passado. O valor verificado é passado para um determinado registro de dígito usando a função spiTransfer .

Na função setup , as funções init_7seg e shutdown(false) são chamadas. A função spiTransfer(10, 8) é chamada para definir a intensidade da exibição. A exibição é limpa chamando a função clearDisplay . Os pinos do Arduino conectados aos botões são definidos como entrada digital usando a função pinMode .

Uma função displayToken é definida para recuperar os dígitos individuais do número do token e exibi-los no respectivo dígito de 7 segmentos usando a função setChar .

Na função loop , o Arduino testa a entrada, ou seja, um LOW lógico neste caso, dos botões interligados aos pinos 7 e 8. Se houver entrada no pino 7, ele aumenta o número do token em um e exibe o número atualizado. número do token fazendo uma chamada para a função displayToken . Se houver entrada no pino 8, ele diminui o número do token em um e exibe o número do token atualizado fazendo uma chamada para a função displayToken . Caso contrário, o número do token permanece inalterado e é atualizado no display, novamente fazendo uma chamada à função displayToken . A função loop continua iterando constantemente, verificando se há atualizações no número do token do usuário e atualizando repetidamente o número do token para os 7 segmentos.

Resultados

Vídeo de demonstração

(tagsParaTraduzir)Arduino

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.