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

Você está preparado?

Squids Arduino News

Desafio 82 - Projeto 92 Relógio digital com temperatura, umidade e datas Com base no projeto Projeto 92 - Criando um relógio digital com OLED SSD1306, módulo DS3231 e Arduino resolva os seguin...

Básico - Projeto 92 Criando um relógio digital com Oled SSD1306 - bibliotecas Adafruit Objetivo O objetivo neste projeto é criar um relógio digital usando um display OLED junto com o Real Time ...

Desafio 81 - Projeto I09 Controlando 2 motores com driver L9110s (menu via display LCD) Com base no projeto I09 - Motores DC com Driver Ponte H L9110 e Arduino - Controle de 4 velocidades pelo ...

Intermediário - Projeto 09 Motores DC com driver ponte H L9110s e Arduino - 4 velocidades Objetivo Neste tutorial vamos mostrar como controlar a velocidade de 2 motores CC (corrente contínua) a...

Básico - Hub 008 Usar o módulo display 4 dígitos 74HC595   Sugerido por: Tim Santos Objetivo O objetivo é adaptar o  Projeto 63 - Usando o módulo TM1637 (display 4 dígitos) com Arduino e u...

Outros artigos

Mais: Desafios Projetos Básicos Projetos Intermediários Básico

Topo