Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ninja-forms domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/ff4jg8asu0ua/public_html/wp-includes/functions.php on line 6114

Notice: A função _load_textdomain_just_in_time foi chamada incorretamente. O carregamento da tradução para o domínio twentyseventeen foi ativado muito cedo. Isso geralmente é um indicador de que algum código no plugin ou tema está sendo executado muito cedo. As traduções devem ser carregadas na ação init ou mais tarde. Leia como Depurar o WordPress para mais informações. (Esta mensagem foi adicionada na versão 6.7.0.) in /home/ff4jg8asu0ua/public_html/wp-includes/functions.php on line 6114
Módulo Display 7 Segmentos TM167 Clock/Decimal - VLADCONTROL

Módulo Display 7 Segmentos TM167 Clock/Decimal

Módulo Display de Sete Segmentos é formado por sete elementos os quais podem ser ligados ou desligados individualmente. Eles permitem ser combinados a fim de produzir representações simplificadas de algarismos arábicos.
Os sete segmentos são dispostos num retângulo com dois segmentos verticais em cada lado e um segmento horizontal em cima e em baixo. Em acréscimo, o sétimo segmento divide o retângulo horizontalmente em duas partes iguais.

Módulo Display de 7 segmentos com CI TM167

Esse módulo é uma placa composta basicamente por um display de 7 segmentos com 4 dígitos e um circuito integrado TM1637. O controle de cada dígito pode ser feito de forma individual ou simultâneo. O circuito integrado TM1637 é que permite a redução de conexão ao i/o digital em 2 pinos a uma plataforma microcontroladora.

Especificações

    • Controlador: TM1637
    • Tensão de operação: 3,3VDC / 5VDC
    • Número de dígitos: 4
    • Dois pontos mediano – versão clock
    • 4 pontos – versão decimal
    • Interface: I2C
    • Dimensões: 42x24x12mm

Projeto Relógio

Esse modelo (Módulo Display de 7 segmentos Clock) está basicamente relacionado para a medição de tempo, porém pode ser utilizado para outras finalidades em diversas aplicações.
Para aperfeiçoamento deste projeto, será utilizado o módulo DS1302 o qual é um módulo que permite a implementação de um relógio em tempo real, viabilizando o controle do tempo em segundo, minuto, hora, dia, semana, mês, ano e a capacidade de ajustes para anos bissextos.

Material

    • 01 – Arduino ( Podendo ser Mega, Uno ou Nano)
    • 01 – Módulo Display 7 segmentos 4 dígitos TM167 Clock
    • 02 – Push button
    • 01 – Módulo DS1302
    • 02 – Resistores 10KΩ
    • Jumpers para a conexão

Conexão do Módulo Display ao Arduino

A montagem é muito simples, então basta seguir conforme o esquema:

DISPLAY 7SEG TM167

Código de Funcionamento

Primeiramente, devemos incluir as bibliotecas TM1637Display.h e DS1302.h. Em seguida, com algumas modificações do código exemplo da própria biblioteca, obteremos o código de aplicação desse projeto para então, finalmente, podermos carregar no Arduino.

#include <Wire.h>
#include <stdio.h>
#include <DS1302.h>
#include <TM1637Display.h>

namespace {
// DS1302
const int kCePin   = 5;
const int kIoPin   = 6;
const int kSclkPin = 7;

// Modulo Display
const int clk = 2;
const int dio = 3;

DS1302 rtc(kCePin, kIoPin, kSclkPin); // Criar um objeto DS1302

TM1637Display display(clk, dio);

String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Domingo";
    case Time::kMonday: return "Segunda";
    case Time::kTuesday: return "Terca";
    case Time::kWednesday: return "Quarta";
    case Time::kThursday: return "Quinta";
    case Time::kFriday: return "Sexta";
    case Time::kSaturday: return "Sabado";
  }
  return "(unknown day)";
}

int printTime() {
  // Obter a hora e a data atuais do chip
  Time t = rtc.time();

  // Dia da semana
  const String day = dayAsString(t.day);

  // Formatar a hora e a data e insir no buffer temporario
  char buf[50];
  // snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day.c_str(), t.yr, t.mon, t.date, t.hr, t.min, t.sec);
  snprintf(buf, sizeof(buf), "%s - %02d/%02d/%04d - %02d:%02d:%02d", day.c_str(), t.date, t.mon, t.yr, t.hr, t.min, t.sec);

  // Imprimir a sequencia formatada em serie para ver a hora
  Serial.println(buf);
  int dt = t.hr * 100 + t.min;
  return dt;
}
}

# define botaoPin_1 9    // Entrada do push button hora
# define botaoPin_2 10   // Entrada do push button minuto

int h, m; // Variaveis auxiliares

unsigned long changeTime, changeTime1, changeTime2 ;

boolean leBotao(int porta);   // Prototipo funcao que le o botao

void setup() {
  Serial.begin(9600);
  display.setBrightness(0x0F);
  display.clear();

  rtc.writeProtect(false);
  rtc.halt(false);

  h = 16;
  m = 30;

  pinMode(botaoPin_1, INPUT_PULLUP);   // Define o pino do botao como INPUT_PULLUP - HORAS
  pinMode(botaoPin_2, INPUT_PULLUP);   // Define o pino do botao como INPUT_PULLUP - MINUTOS
}

void loop() {

  if (leBotao(botaoPin_1)) /* Se botão for apertado retorna true, se não for, retorna false */
  {
    h++;

    if ( h > 23)
    {
      h = 0;
    }
    /* Criar um novo objeto de hora para definir a data e a hora.
       Sunday, September 22, 2013 at 01:38:50.
       Time t(2020, 02, 11, 10, 51, 00, Time::kThursday);
       Set the time and date on the chip.
       rtc.time(t); */

    Time t(2020, 02, 16, h, m, 00, Time::kSunday);

    rtc.time(t);
  }

  if (leBotao(botaoPin_2))
  {
    m++;

    if ( m > 59)
    {
      m = 0;
    }

    Time t(2020, 02, 13, h, m, 00, Time::kTuesday);

    rtc.time(t);
  }

  int decimaltime;
  decimaltime = printTime();

  if ((millis() - changeTime) > 2000) {

    display.showNumberDecEx(decimaltime, (0x80 >> 1), true, 4, 0);
    changeTime = millis();
  }

  if ((millis() - changeTime) > 1000) {

    display.showNumberDec(decimaltime, true, 4, 0);
  }
}

boolean leBotao(int porta)
{
  static boolean estadoAnterior[5] = {true, true, true, true, true}; /* static --> para manter a variável na memória */

  boolean estadoBotao = digitalRead(porta);
  boolean ligado = false;

  if (!estadoBotao && estadoAnterior[porta]) /* Esse controle permite que, mesmo o botão permanecendo apertado, vai ser considerado apenas uma vez*/
  {
    ligado = true;
  }

  estadoAnterior[porta] = estadoBotao;

  return ligado;
}

Então, feito isso, podemos observar a indicação da hora inicial setada com os pontos medianos piscando e quando pressionamos os botões, vemos a variação dos dígitos para acerto do relógio.

Módulo Display Clock TM167

Projeto Módulo Display TM167 – Decimal

Partindo para essa versão com quatro pontos decimais, incluiremos um Sensor de Temperatura e Umidade DHT11 para serem mostradas no display a temperatura e umidade relativa ambiente.
Monte então o projeto conforme o esquema:

DISPLAY-7SEG-TM167

Código

Primeiramente, devemos incluir também a biblioteca DHT.h para poder operar o sensor de temperatura. Então, em seguida, só basta carregar o código e aguardar os valores a serem mostrados.

#include "DHT.h"

#define DHTPIN 7          // Pino Digital 7 do sensor

#define DHTTYPE DHT11     // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3

TM1637Display display(CLK, DIO);

void setup() {
  Serial.begin(9600);
  //Serial.println(F("DHTxx test!"));
  dht.begin();
  display.setBrightness(0xff);
}

float dec_c, dec_f, dec_h;
int v_int_c, v_int_f, v_int_h;

const uint8_t celsius[] = {
  SEG_A | SEG_B | SEG_F | SEG_G,  // Circle
  SEG_A | SEG_D | SEG_E | SEG_F   // C
};

const uint8_t fahreheit[] = {
  SEG_A | SEG_B | SEG_F | SEG_G,  // Circle
  SEG_A | SEG_F | SEG_G | SEG_E   // F
};

const uint8_t hum[] = {
  SEG_F | SEG_B | SEG_G | SEG_E | SEG_C,  // H
  SEG_E | SEG_C | SEG_D                   // u
};

void loop() {
  // A leitura da temperatura ou umidade leva cerca de 250 milissegundos
  // As leituras do sensor também podem ter ate 2 segundos de delay
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Verifica se alguma leitura falhou e sai para tentar novamente
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Calcula o índice de calor em Fahrenheit (o padrao)
  float hif = dht.computeHeatIndex(f, h);
  // Calcula  o índice de calor em graus Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));

  v_int_c = int(t); // Tira a parte inteira Celsius
  v_int_f = int(f); // Tira a parte inteira Fahrenheit

  // Tira a parte decimal
  dec_c = (t - v_int_c) * 100;
  dec_f = (f - v_int_f) * 100;
  dec_h = (h - v_int_h) * 100;

  display.clear();
  delay(1000);

  // Mostra a temperatura em Celsius
  display.showNumberDec(dec_c, true);
  display.showNumberDecEx(t, 0x80 >> 1, true, 2);
  delay(1500);
  display.clear();
  display.setSegments(celsius, 2, true);
  delay(2000);

  // Mostra a temperatura em Fahrenheit
  if (f > 100) {
    display.showNumberDec(dec_f, true);
    display.showNumberDecEx(f, 0x80 >> 2, true, 3);
    delay(1500);
    display.clear();
    display.setSegments(fahreheit, 2, true);
    delay(2000);
  }
  else {
    display.showNumberDec(dec_f, true);
    display.showNumberDecEx(f, 0x80 >> 1, true, 2);
    delay(1500);
    display.clear();
    display.setSegments(fahreheit, 2, true);
    delay(2000);
  }

  //Mostra a umidade relativa
  display.showNumberDec(dec_h, true);
  display.showNumberDecEx(h, 0x80 >> 1, true, 2);
  delay(1500);
  display.clear();
  display.setSegments(hum, 2, true);
  
  delay(2000);
}

 

Módulo Display 7 seg Decimal

Concluímos que, com esse módulo e auxílio da biblioteca TM167, fica muito fácil utilizar esse display, podendo ser aplicado em uma grande gama de projetos.

Onde comprar?

LOJAS

Conheça também!