Olá pessoal,
Neste post vou apresentar mais um componente porém não faz parte do projeto de acionamento de ar condicionado. Trata-se de um componente RTC (Real Time Clock ou Relógio de Tempo Real) que permite ter a informação de data e hora em tempo real para ser utilizado em alarmes ou de executar ações programadas em horários específicos.
Uma bateria de lítio garante que os dados sejam preservados mesmo sem alimentação externa, e é acionada automaticamente em caso de falta de energia no módulo.
Bom, vamos lá:
Componente utilizado: Tiny RTC Module DS1307
Esquema de ligação:
Utilize a biblioteca RTClib. Está disponível em: https://github.com/adafruit/RTClib. É necessário ajustar a data e hora do componente. Execute o seguinte código para ajustar a data e hora sempre que precisar:
#include "RTClib.h"
// Objeto rtc (relogio de tempo real)
RTC_DS1307 rtc;
void setup () {
rtc.begin(); //inicia o objeto rtc
// Verifica se o RTC esta funcionando
if (! rtc.isrunning()) {
Serial.print("RTC is NOT running!");
}
else
{
rtc.adjust(DateTime(__DATE__, __TIME__)); // Ajusta o rtc para a data e hora em que o sketch foi compilado
void loop() {
DateTime now = rtc.now();
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
}
Acompanhe no Monitor Serial se a data e hora foi acertada.
Utilizando junto com o LCD Display:
Uma vez acertada a data e hora no sketch anterior, o código seguinte exibe a data e hora no display LCD:
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
Uma bateria de lítio garante que os dados sejam preservados mesmo sem alimentação externa, e é acionada automaticamente em caso de falta de energia no módulo.
Bom, vamos lá:
Componente utilizado: Tiny RTC Module DS1307
Esquema de ligação:
Fonte: Blog FilipeFlop |
Utilize a biblioteca RTClib. Está disponível em: https://github.com/adafruit/RTClib. É necessário ajustar a data e hora do componente. Execute o seguinte código para ajustar a data e hora sempre que precisar:
#include "RTClib.h"
// Objeto rtc (relogio de tempo real)
RTC_DS1307 rtc;
void setup () {
rtc.begin(); //inicia o objeto rtc
// Verifica se o RTC esta funcionando
if (! rtc.isrunning()) {
Serial.print("RTC is NOT running!");
}
else
{
rtc.adjust(DateTime(__DATE__, __TIME__)); // Ajusta o rtc para a data e hora em que o sketch foi compilado
}
}
void loop() {
DateTime now = rtc.now();
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
}
Acompanhe no Monitor Serial se a data e hora foi acertada.
Utilizando junto com o LCD Display:
Uma vez acertada a data e hora no sketch anterior, o código seguinte exibe a data e hora no display LCD:
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
// Objeto rtc (relogio de tempo real)
RTC_DS1307 rtc;
void setup () {
rtc.begin(); //inicia o objeto rtc
// Verifica se o RTC esta funcionando
if (! rtc.isrunning()) {
Serial.print("RTC is NOT running!");
}
else
{
rtc.adjust(DateTime(__DATE__, __TIME__)); // Ajusta o rtc para a data e hora em que o sketch foi compilado
}
lcd.begin(16,2); // inicializa o lcd
lcd.backlight();
lcd.backlight();
}
void loop() {
DateTime now = rtc.now();
}
lcd.clear();
lcd.print("DATA: ");
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(0,1);
lcd.print("HORA: ");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
delay(2000);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(0,1);
lcd.print("HORA: ");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
delay(2000);
no meu aparece 165/165/2165 165:165:85 , porque será?
ResponderExcluireu tambem estou com isso e ninguem tem a solução.
ResponderExcluirVocê tem mais algum outro componente conectado? Experimenta comentar partes do código para isolar o problema.
Excluir