Faça login para adicionar itens aos seus favoritos.

Franzininho WiFi: Display 7 Segmentos TM1637

Introdução

O display de 7 segmentos certamente tornou-se um dos componentes mais utilizados para exibir informações alfanuméricas em diversas aplicações, como despertador, voltímetro, controladores de velocidade, entre outras. Esse display exige uma menor complexidade em sua construção, sendo composto por LEDs individuais com seus espaços separados (segmentados). Devido a essa simplicidade, o custo é menor em comparação com outros modelos da mesma categoria.

Figura 1: Display de 7 segmentos

A desvantagem em utilizar esse display é por conta de exigir pelo menos sete pinos individuais de controle e um de alimentação (cátodo ou ânodo comum) para imprimir letras ou números, o que, em alguns projetos, pode tornar-se um problema. Sabendo disso, vamos apresentar neste artigo um exemplo de projeto utilizando o módulo TM1637 (Figura 2), o qual leva o nome do próprio circuito integrado (CI). O módulo possui interface de comunicação I2C e dispõe de quatro displays de 7 segmentos, o que possibilita reproduzir ou criar diferentes aplicações. Caso tenha interesse em conhecer mais sobre o CI, acesse o datasheet.

Figura 2 : Módulo TM1637

Instalação da Biblioteca 

Vamos instalar a biblioteca TM1637Display.h , para auxiliar na configuração do canal I2C e acessar os métodos para imprimir na tela letras e/ou números em nosso exemplo de projeto. Siga os passos abaixo para realizar a instalação. Acesse: Ferramenta -> Gerenciador de Bibliotecas (Tools  -> Manager Libraries):

Figura 3 : Acesso ao gerenciador de bibliotecas

Após acessar o Gerenciador de Bibliotecas (Manager Libraries), aguarde até que uma janela semelhante à mostrada na figura abaixo seja exibida. Digite “TM1637” no campo de texto e aguarde a conclusão da pesquisa.

Embarcados Experience 2024: Evento Presencial

Participe do Embarcados Experience 2024 em São Paulo. Conhecimento técnico, palestras, workshops e oportunidade de networking com profissionais experientes.

Inscreva-se agora

Procure pela biblioteca “TM1637” criada por Avishay Orpaz e clique em “Install” para concluir a instalação. Em seguida, clique em “Close“. Agora estamos prontos para utilizar a biblioteca:

Figura 4: Instalação da biblioteca

Biblioteca TM1637

Nesta seção vamos abordar os métodos presentes dentro da biblioteca “TM1637.h”. Para mais informações sobre cada método acesse o repositório no GitHub.

setBrightness()

Configura a intensidade do brilho no display.

  • brightness : número entre 0 (baixa intensidade) a 7 (maior intensidade) 
  • on : liga ou desliga o display

setSegments()

Mostra na tela caracteres especiais ou pequenas palavras inserido dentro de um array de bytes sendo cada elemento representando um dígito. Cada bit representa um segmento do display (bit 0 é o segmento A, bit 1 segmento B e assim por diante).

  • segments : array que contém os caracteres especiais  
  • length : número de digitos modificados
  • pos : em qual display vai começar a mostrar ( 0 – mais a esquerda e 3 – mais a direita)

clear()

Limpa toda a tela, ou seja, desliga de cada segmento.

encodeDigit()

Converte números entre 0 – 15 em código entendido pelo display de 7 segmentos.Numéro entre 10-15 são convertidos em dígitos decimais.

  • digit : digito a ser codificado

showNumberDecEx()

Mostra na tela número decimais utilizando controle de pontos.

  • num : número que será mostrado
  • dots : esse parâmetro é uma máscara de bits, correspondente a cada ponto no display. Confira se seu display possui todas as possibilidades de uso.
    • 0b10000000 : para mostrar o ponto no dígito mais à esquerda no formato  0.000
    • 0b01000000 : para mostrar o ponto no formato  00.00
    • 0b00100000 : para mostrar o ponto no formato  000.0
    • 0b11100000 : para mostrar o ponto no formato  0.0.0.0 
  • leading_zero : true – para mostrar os zeros, false – deixa os espaço vazio (LED apagados)
  • length : número de digitos mostrados 
  • pos : em qual display vai começar a mostrar ( 0 – mais a esquerda e 3 – mais a direita)

showNumberDec()

Mostra na tela número decimais.

  • num : número que será mostrado
  • leading_zero : true – para mostrar os zeros, false – deixa os espaço vazio (LED apagados)
  • length : número de digitos mostrados 
  • pos : em qual display vai começar a mostrar ( 0 – mais a esquerda e 3 – mais a direita)

Materiais Necessários

Os materiais necessários para desenvolver nossa aplicação são:

  • Placa Franzininho WiFi
  • Módulo Display 7 Segmento com TM1637
  • Jumpers
  • Arduino IDE 

Circuito 

A seguir temos a montagem do circuito. O módulo comunica-se via I2C, verifique as conexões antes de ligar o display.

  • VCC : conectado ao 3.3v 
  • GND : conectado ao GND da placa Franzininho
  • CLK : pino responsável por receber clock da comunicação I2C, conectado a GPIO 9  
  • DIO: pino recebe os dados da comunicação I2C para escrever no display, conectado a GPIO 8
Figura 5: Montagem do circuito em protoboard

Código

No projeto proposto, faremos uma demonstração de uso com o módulo TM1637 e os recursos que a biblioteca pode oferecer quando utilizada em nossos projetos. Abaixo segue o código, e caso tenha alguma dúvida, volte à seção “Biblioteca TM1637“.

Simule esse projeto no Wokwi: https://wokwi.com/projects/370090219547815937

Explicação do Código

Incluir a biblioteca para acessar os métodos e configurar a comunicação I2C

Define os pinos da comunicação I2C (Serial Clock e Serial Data)

Declarar o construtor incluindo os parâmetros de pinos (SCL e SDA) e o tempo de resposta para escrita dados no barramento, por padrão é 100 milisegundo (DEFAULT_BIT_DELAY), mas pode ser alterado de acordo com o projetista.

Vetor contendo o identificador de cada segmento do display para criar elementos específicos, nesse caso vamos utilizar para criar um retângulo com segmentos especificos de cada um dos displays.

Vetor contendo o identificador de apenas um segmento do display.

Vetor contendo o identificador para apagar o segmento do display.

Função que criar uma animação utilizando um único segmento do display, nesse caso acessa o vetor declarado anteriormente, one_seg

No setup vamos configurar a intensidade luminosa do display e limpar a tela. Diferente das outras bibliotecas que estejam acostumados, não há um método begin().

Após essa etapa vamos começar a demo do display mostrando como podemos utilizar em aplicações que envolvam temporizadores (cronômetro, relógio, despertadores), aguardar 1,5 segundo e limpar a tela.

Exemplo de utilizar um caractere especial(normalmente para letras) para imprimir na tela, aguarda um tempo e limpa a tela

Nessa etapa demo vamos apresentar formas de colocar na tela número negativo, positivos e como posicionar na tela utilizando os mesmo métodos.

No loop, vamos chamar a função responsável por criar a animação de um segmento.

Conclusão

Nesse artigo apresentamos de uma prática como utilizar o módulo TM1637 em seus projetos e como podemos utilizar para interagir com sensores ou atuadores. A desvantagem do módulo em utiliza displays de 7 segmentos é a limitação em criar letras o que pode agregar mais valor para aplicação. Como sugestão, procure por outros modelos de display que possuem mais segmentos na tela, estes modelos podem imprimir mais caracteres por tela. Por outro lado, as vantagens em utilizar este módulo deve-se pelo fato de simplificar o projeto e de criar animações de um feito simples e fácil. Portanto, convidamos os entusiastas a conhecerem mais sobre o projeto Franzininho e compartilhar seu projetos ou ideias em forma de artigo ou vídeo. 

Outros artigos da série

Franzininho WiFi: Primeiros passos na Arduino IDE >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » Franzininho WiFi: Display 7 Segmentos TM1637

EM DESTAQUE

WEBINARS

LEIA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: