Hoje falaremos sobre como realizar a interface entre o Módulo Display 7 Segmentos para Relógio e o
Modulo DS1302 relógio em tempo real para arduino que em conjunto possibilitam a elaboração de um relógio bastante simples de construir, que com os ajustes adequados, pode realizar diversas tarefas, que podem ser iniciadas em uma determinada hora, a ser programada previamente.
Na demonstração abaixo, o Arduino está também conectado a um Módulo Relé 5V 1 canal, que será utilizado para acionar uma lâmpada do tipo "Olho de Boi", bastante utilizada para indicar se um sistema está energizado pela rede CA convencional.
Na montagem, o Arduino irá acionar o Relé, acendendo a lâmpada em um determinado horário, e apagando-a após um determinado intervalo de tempo.
Para a montagem, serão necessários os seguintes itens:
- Arduino Uno
- Shield Placa Expansora para Arduino UNO
- Modulo DS1302 relógio em tempo real para arduino
- Módulo Display 7 Segmentos para Relógio
- Módulo Relé 5V 1 canal
- Cabo de força rabicho 2 pinos paralelo c/1,5M
- Lâmpada tipo "Olho de Boi"
- Fios para ligação (Sugestão: Cabo Jumper MACHO/FÊMEA 20cm 40 vias)
As Conexões devem ser feitas da seguinte forma:
Módulo RTC | Arduino
GND | GND
VCC | 5v
SCK | D6
I/O | D7
RST | D8
Módulo 7Seg | Arduino
GND | D2
VCC | D3
DIO | D4
CLK | D5
Módulo Relé | Arduino
IN | D12
GND | GND
VCC | 5v
O cabo de força deve ser conectado à rede elétrica, sendo que um dos fios deve ser diretamente conectado à lampada e o outro deve passar pelo terminal C do Relé. O outro fio da lâmpada deve ser conectado ao terminal NO do Relé.
Confira um vídeo mostrando o funcionamento do projeto.
Foi configurado para ativar o relé as 17:40 e permanecer aceso por um minuto.
Baixe aqui o sketch com a programação do Arduino para esse projeto.
Segue abaixo o código fonte utilizado nesse projeto.
Modulo DS1302 relógio em tempo real para arduino que em conjunto possibilitam a elaboração de um relógio bastante simples de construir, que com os ajustes adequados, pode realizar diversas tarefas, que podem ser iniciadas em uma determinada hora, a ser programada previamente.
Na demonstração abaixo, o Arduino está também conectado a um Módulo Relé 5V 1 canal, que será utilizado para acionar uma lâmpada do tipo "Olho de Boi", bastante utilizada para indicar se um sistema está energizado pela rede CA convencional.
Na montagem, o Arduino irá acionar o Relé, acendendo a lâmpada em um determinado horário, e apagando-a após um determinado intervalo de tempo.
Para a montagem, serão necessários os seguintes itens:
- Arduino Uno
- Shield Placa Expansora para Arduino UNO
- Modulo DS1302 relógio em tempo real para arduino
- Módulo Display 7 Segmentos para Relógio
- Módulo Relé 5V 1 canal
- Cabo de força rabicho 2 pinos paralelo c/1,5M
- Lâmpada tipo "Olho de Boi"
- Fios para ligação (Sugestão: Cabo Jumper MACHO/FÊMEA 20cm 40 vias)
Arduino Uno |
Shield Placa Expansora para Arduino UNO |
Modulo DS1302 relógio em tempo real para arduino |
Módulo Display 7 Segmentos para Relógio |
Módulo Relé 5V 1 canal |
As Conexões devem ser feitas da seguinte forma:
Módulo RTC | Arduino
GND | GND
VCC | 5v
SCK | D6
I/O | D7
RST | D8
Módulo 7Seg | Arduino
GND | D2
VCC | D3
DIO | D4
CLK | D5
Módulo Relé | Arduino
IN | D12
GND | GND
VCC | 5v
Diagrama de Conexão |
O cabo de força deve ser conectado à rede elétrica, sendo que um dos fios deve ser diretamente conectado à lampada e o outro deve passar pelo terminal C do Relé. O outro fio da lâmpada deve ser conectado ao terminal NO do Relé.
Confira um vídeo mostrando o funcionamento do projeto.
Foi configurado para ativar o relé as 17:40 e permanecer aceso por um minuto.
Baixe aqui o sketch com a programação do Arduino para esse projeto.
Segue abaixo o código fonte utilizado nesse projeto.
//############### ELETRODEX ELETRÔNICA ###############
// Programa de interface entre o Módulo RTC
// e o Módulo Display 7 Segmentos para Relógio
//
// As Conexões devem ser feitas da seguinte forma:
// Módulo RTC | Arduino
// GND | GND
// VCC | 5v
// SCK | D6
// I/O | D7
// RST | D8
//
// Módulo 7Seg | Arduino
// GND | D2
// VCC | D3
// DIO | D4
// CLK | D5
//
// Módulo Relé | Arduino
// IN | D12
// GND | GND
// VCC | 5v
#include <virtuabotixRTC.h> // Carrega a biblioteca virtuabotixRTC
#include <TimerOne.h> // Carrega a biblioteca TimerOne
#include "TM1637.h" // Carrega a biblioteca TM1637
#define ON 1
#define OFF 0
virtuabotixRTC myRTC(6, 7, 8); // Determina os pinos ligados ao modulo myRTC(clock, data, rst)
int8_t TimeDisp[] = {0x00, 0x00, 0x00, 0x00}; // Define a forma como serão mostrados os numeros no 7seg
unsigned char ClockPoint = 1; // Inicializa a variavel que controla o ":" do Relógio
unsigned char Update;
unsigned char halfsecond = 0;
unsigned char second;
unsigned char minute;
unsigned char hour;
#define CLK 5 // Determina os pinos de clock e dados do módulo Display 7seg (pode ser alterado)
#define DIO 4
TM1637 tm1637(CLK, DIO); // Inicializa o módulo Display 7seg
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT); // Inicializa pino Digital 2 como saída
pinMode(3, OUTPUT); // Inicializa pino Digital 3 como saída
pinMode(12, OUTPUT); // Inicializa pino Digital 12 como saída
digitalWrite(2, LOW); // Configura o pino 2 em 0v (necessário para alimentação do Módulo 7seg, mas pode ser alterado)
digitalWrite(3, HIGH); // Configura o pino 3 em 5v (necessário para alimentação do Módulo 7seg, mas pode ser alterado)
tm1637.set();
tm1637.init();
Timer1.initialize(500000);//timing for 500ms
Timer1.attachInterrupt(TimingISR); //declare the interrupt serve routine:TimingISR
// Informacoes iniciais de data e hora
// Apos setar as informacoes, comente a linha abaixo
// (segundos, minutos, hora, dia da semana, dia do mes, mes, ano)
// myRTC.setDS1302Time(30, 11, 16, 2, 8, 6, 2015);
}
void loop()
{
myRTC.updateTime(); // Le as informacoes do CI
TimeUpdate(); // Atualiza as variáveis que controlam o Display 7seg
tm1637.display(TimeDisp); // Comanda o módulo 7seg para mostrar as variaveus atualizadas acima.
Serial.print("Data : "); // Imprime as informacoes no serial monitor
imprime_dia_da_semana(myRTC.dayofweek); // Chama a rotina que imprime o dia da semana
Serial.print(", ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print("Hora : ");
if (myRTC.hours < 10) // Adiciona um 0 caso o valor da hora seja <10
{
Serial.print("0");
}
Serial.print(myRTC.hours);
Serial.print(":"); // Adiciona um 0 caso o valor dos minutos seja <10
if (myRTC.minutes < 10)
{
Serial.print("0");
}
Serial.print(myRTC.minutes);
Serial.print(":");
if (myRTC.seconds < 10) // Adiciona um 0 caso o valor dos segundos seja <10
{
Serial.print("0");
}
Serial.println(myRTC.seconds);
ClockPoint = (~ClockPoint) & 0x01; // Inverte o estado do ":" do relógio
despertador();
delay( 1000);
}
void despertador()
{
if (hour==17 && minute==19)
{
digitalWrite(12, LOW);
}
else
{
digitalWrite(12, HIGH);
}
}
void imprime_dia_da_semana(int dia)
{
switch (dia)
{
case 1:
Serial.print("Domingo");
break;
case 2:
Serial.print("Segunda");
break;
case 3:
Serial.print("Terca");
break;
case 4:
Serial.print("Quarta");
break;
case 5:
Serial.print("Quinta");
break;
case 6:
Serial.print("Sexta");
break;
case 7:
Serial.print("Sabado");
break;
}
}
void TimingISR()
{
halfsecond ++;
Update = ON;
if (halfsecond == 2) {
second = (myRTC.seconds); // Sincroniza as variáveis dos segundos, no RTC e no 7seg
minute = (myRTC.minutes); // Sincroniza as variáveis dos minutos, no RTC e no 7seg
hour = (myRTC.hours); // Sincroniza as variáveis das horas, no RTC e no 7seg
halfsecond = 0;
}
// Serial.println(second);
}
void TimeUpdate(void) // Rotina de comando do Display 7seg
{
if (ClockPoint)tm1637.point(POINT_ON);
else tm1637.point(POINT_OFF);
TimeDisp[0] = hour / 10;
TimeDisp[1] = hour % 10;
TimeDisp[2] = minute / 10;
TimeDisp[3] = minute % 10;
Update = OFF;
}
Conte-nos suas experiências utilizando os produtos adquiridos em nossa loja!
Até o próximo artigo!
Olá Amigos da Eletrodex, utilizei este código em um projeto e funcionou tudo como descrito, parabéns. Agora gostaria de saber se vocês podem me ajudar a acionar um relé com uma contagem regressiva utilizando os mesmos componentes deste projeto. Tipo contagem de 10 segundos e quando o cronometro zerar o led acende.
ResponderExcluirOlá Amigos da Eletrodex, utilizei este código em um projeto e funcionou tudo como descrito, parabéns. Agora gostaria de saber se vocês podem me ajudar a acionar um relé com uma contagem regressiva utilizando os mesmos componentes deste projeto. Tipo contagem de 10 segundos e quando o cronometro zerar o led acende.
ResponderExcluirGND DO DISPLAY NO D2 ISSO QUEIMA DISPLAY?
ResponderExcluirboa noite.
ResponderExcluironde consigo essas bibliotecas?
Este comentário foi removido pelo autor.
ResponderExcluir