Básico - Projeto 63

Usando o módulo TM1637 (display com 4 dígitos)

Objetivo

Neste projeto vamos mostrar como utilizar o módulo TM1637 para exibir o valor de uma porta analógica do microcontrolador Arduino. Ao usarmos um potenciômetro, o display irá exibir os valores de tensão entre 0 e 5V que são interpretados pelo Arduino como valores entre 0 e 1023. Ao clicarmos um botão valores passarão de números entre 0 e 1023 para números entre 0 e 5V.

Módulo TM1637 é constituído por 4 displays de 7 segmentos em conjunto (4 dígitos). O módulo TM1637 é de fácil integração com o Arduino, pois sua tensão de alimentação é de 5V e seu controle é feito apenas por 2 conexões com o microcontrolador. Os outros 2 pinos são utilizados para a alimentação do componente. Ideal para projetos com relógio (possui uma identificação central com dois pontos) e contadores que necessitem de um display de fácil visualização.

Observação: Este projeto utilizará uma biblioteca específica para o módulo TM1637 que disponibilizaremos junto com o sketch.

 Módulo TM1637 com display 4 dígitos 

 

Aplicação

Para fins didáticos e projetos com relógios digitais e equipamentos com contadores.

Componentes necessários

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  
Módulo TM1637

Módulo TM1637 - 4 dígitos

(anodo comum)

1 Módulo TM1637 com display 4 dígitos  - Controlador TM1637
- Alimentação: 3.3 à 5V DC
- Display 7 segmentos 4 dígitos anodo comum

datasheet

Push Button Push button 6X6X5mm 1

 

Potenciômetro Potenciômetro 1K 1 Resultado de imagem para potenciômetro

Você poderá experimentar valores diferentes do potenciômetro, entre 1K a 100K

A tensão resultante do potenciômetro aumenta quando giramos o eixo do componente no sentido do polo negativo para o polo positivo.

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.


Atenção

1. Para a montagem do módulo TM1637 é necessário conhecer a disposição dos seus pinos. Olhando na parte traseira do módulo podemos observar 4 pinos, sendo eles: dois pinos de alimentação (Vcc e GND) e dois pinos de controle/comunicação: CLK (clock) e DIO (dados):

TM1637 - Pinagem

2. A tabela a seguir mostra as conexões do Arduino com o módulo TM1637 do nosso projeto.

Pinos do Arduino  Pino do TM1637
2 CLK
3 DIO

 

3) Monte o botão (push button) sem o resistor, pois através da programação vamos habilitar o resistor pull-up interno do arduino. Desta forma, quando o botão estiver pressionado, o Arduino retornará "LOW" ou "0". Veja o projeto Projeto 02b - Led apaga com push button pressionado (pull-up interno do Arduino)  ou assista o vídeo Arduino: Botão e Resistor de Pull Up Interno

4) Observe que nesse projeto o potenciômetro foi montado como um divisor de tensão, onde utilizamos os 3 terminais do componente:

Desta forma o potenciômetro funciona como um divisor de tensão que pode ser lido pelo IDE do Arduino. Girando o eixo do polo negativo (GND) para o polo positivo (Vcc) aumentamos o valor, e ao contrário, diminuímos a intensidade do brilho dos leds do display.

5) Veja abaixo como realizamos a montagem do nosso projeto utilizando um protoboard. Observe que utilizamos um display catodo comum e ligamos o pino 3 no GND do Arduino.

Incluindo biblioteca TM1637 no IDE do Arduino

Para criarmos os comandos para o módulo TM1637 é necessário instalarmos uma biblioteca específica para o componente:

Download dos arquivos da biblioteca TM1637

Para saber detalhes desta biblioteca clique aqui.

Instalando a biblioteca pelo IDE do Arduino

Após fazer o download do arquivo TM1637-master.zip com todos os arquivos da biblioteca compactados no formato zip, abra o IDE do Arduino e siga o tutorial: Como incluir uma biblioteca no IDE do Arduino.

Para conhecer outras bibliotecas para módulos veja a Tabela Biblioteca para Módulos.

Usando a biblioteca

Neste projeto vamos utilizar apenas duas funções (métodos) da biblioteca TM1637:

a) display.setBrightness(): Este serve para definir o brilho do display, onde o parâmetro de 0 define o brilho mais baixo e 7 para o mais alto.Ex.: display.setBrightness(7);

b) showNumberDec() : Esta função serve para mostrar valores no display seguindo os seguintes parâmetros:

1º parâmetro: Número do tipo inteiro. Valores de 0 até 9999;

2º parâmetro: Verdadeiro ou falso. Serve para exibir zeros à esquerda pra valores até 999. O valor padrão é falso.

3º parâmetro: Opcional. Corresponde ao número de dígitos a serem exibidos

4º parâmetro:  Opcional. Posição do dígito menos significativo (0 mais à esquerda, 3 - mais à direita).

Exemplos:

Sketch do projeto

1. Faça o dowload e abra o arquivo projeto63.ino no IDE do Arduino:

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

/*******************************************************************************
*
*    Projeto 63: Modulo TM1637 com Arduino
*    Autor: Arduino e Cia
*    Adaptado por: Angelo Luis Ferreira
*    
*              http://squids.com.br/arduino                
*
*******************************************************************************/
#include <TM1637Display.h>
//Pinos de controle do modulo
const byte CLK = 2;
const byte DIO = 3;
const byte pin_pot = A0;

byte estado = 0;
int pin_but = 12;
byte controle = 0;

//Inicializa o display
TM1637Display display(CLK, DIO);

int valor;
float tensao;

void setup(){
  pinMode(A0, INPUT);
  pinMode(pin_but, INPUT_PULLUP); ///Habilita o pull up interno do Arduino
  Serial.begin(9600); 
}

void loop(){

  // le o estado pushbutton: ligado (HIGH) ou desligado (LOW)
  estado = digitalRead(pin_but);
  
  // verifica se o botão (pushbutton) está pressionado e muda o controle
  if (!estado) {         
      controle = !controle; // inverte valor da variável controle
      while (!digitalRead(pin_but)) {  }  //esperera soltar o botão
      delay(50); 
  } 
  
  //Define o brilho do display
  display.setBrightness(0x0f);
  
  //Le o valor do potenciometro
  valor = analogRead(pin_pot);
  
  tensao = map(valor, 0, 1023, 0, 5); // converte tensão entre 0 e 5
  Serial.println(estado);

  if(controle == 0) {
      //Mostra o valor no display
      display.showNumberDec(valor, false);
  } else if(controle == 1) {
    //Mostra o valor no display
    display.showNumberDec(tensao, false);
  }
  delay(50);
}

ATENÇÃO: Se o display não acender verifique todas as conexões do módulo e do potenciômetro.

Vídeo


Como o projeto deve funcionar

1. Ao iniciar o programa, o display irá exibir um valor entre 0 e 1023, dependendo da posição que o eixo do potenciômetro se encontra.

2. Girando o eixo do potenciômetro no sentido horário, diminuiremos os valores até 0 (tensão de 0V na porta analógica A0 do Arduino).

3. Girando o eixo do potenciômetro no sentido anti-horário, aumentaremos os valores até 1023 (tensão de 5V na porta analógica A0 do Arduino).

4. Ao clicarmos o botão, os valores exibidos display serão os valores reais de tensão entre de 0 e 5V.

5. Clicando novamente o botão, os valores serão exibidos entre 0 e 1023.

Desafios

Com base neste projeto, resolva o seguinte desafio:

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

Compartilhe:

Doações

Contribua pra manter o site online :)

Inscreva-se no canal Squids

Squids Arduino News

CB09 : Dimmer para leds com CI 555 sem Arduino Objetivo Criar um circuito gerador de pulsos modulados (PWM - Pulse Width Modulation) para alterar a intensidade do brilho de um led. Para este pro...

Como usar temporizadores no Arduino

Funções de temporização na programação com Arduino Objetivo Nesta dica vamos mostrar utilizar as diversas funções de temporização disponíveis na programação com Arduino. As funções de Temporizaç...

Intermediário - Projeto 11 Contador de acessos utilizando leds infravermelhos e Arduino Objetivo O objetivo deste projeto é criar um sistema de contagem de visitantes que entram e saem de uma s...

Básico - Projeto 94 Simulando um botão na tela do display OLED Objetivo O objetivo deste projeto é simular um botão de controle no display OLED. O botão servirá para controlar a iluminação de u...

Básico - Projeto 93 Criando um relógio analógico com Oled SSD1306 Objetivo O objetivo deste projeto é exibir no display OLED um relógio com estilo analógico, ou seja, com ponteiros. Utilizaremo...

Outros artigos

Mais: Circuitos básicos Dicas de Software Projetos Intermediários Projetos Básicos Desafios Jogos

Você está preparado?

Topo