O DS1307 não tem pino de interrupção para alarme.
https://www.sparkfun.com/datasheets/Components/DS1307.pdf
O DS3231 tem INT/SQW !
https://datasheets.maximintegrated.com/en/ds/DS3231.pdf
i em casa durante 3 horas e quando voltou, o RTC não foi afetado um segundo sequer.
A bichinha é boa mesmo. Quando o treco é bom e funciona, faço questão de espalhar aos 4 ventos.
Inclusive a biblioteca do arduino pra fazer o DS3231 funcionar é a mesma do 1307.
Fuja desse lance de tentar reajustar automaticamente de tempos em tempos via programação. Uma hora isso vai dar zebra, pois ninguém garante que os erros são exatos a cada intervalo de tempo (por exemplo, ninguém garante que serão sempre 5 minutos de avanço a cada 30 dias).
Vc terá que ficar reajustando o relógio de tempos em tempos, manualmente.
Já se vc trocar por um RTC DS3231, vc instala ele e vai dormir, vc fica livre dessa preocupação…
unções de hora, dia da semana e temperatura, setam normalmente. Alguém do fórum poderia me ajudar?
Código:
#include <Wire.h>
#include <LiquidCrystal_I2C.h> #include <DS3231.h>
int temperature; // declarada como INTEIRO porque o getTemp() da bilbioteca trata a temperatura como FLOAT. int rele = 8;
// Modulo I2C display no endereco 0x3F LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Init the DS3231 using the hardware interface DS3231 rtc(SDA, SCL);
void setup() {
pinMode(rele, OUTPUT);
// Setup Serial connection
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino Leonardo
//while (!Serial) {}
//inicialização do display lcd lcd.begin(16, 2);
lcd.clear();
// Initialize the rtc object rtc.begin();
// The following lines can be uncommented to set the date and time rtc.setDOW(6);
rtc.setTime(20, 13, 0);
rtc.setDate(10, 29, 2016);
temperature = rtc.getTemp();
}
void loop() {
digitalWrite(rele, HIGH);
// Send Day-of-Week lcd.setCursor(0, 0);
lcd.print(rtc.getDOWStr());
Serial.print(" ");
// Send date lcd.setCursor(0, 1);
lcd.print(rtc.getDateStr());
Serial.print("-- ");
// Send time lcd.setCursor(8, 0);
lcd.println(rtc.getTimeStr());
lcd.setCursor(12, 1); //Seta a temperatura na 2ª linha 12ª Coluna do LCD //lcd.print("Tempo: ");
lcd.print(temperature);
lcd.write(223);//imprime o caracter (°)
lcd.print("C");
// Wait one second before repeating :) delay (1000);
}…
Guarde o seu RTC DS1307 e use um novo DS3231.
Assunto amplamente discutido. O DS1307 atrasa mesmo, não tem precisão.
http://labdegaragem.com/forum/topics/ajuda-rtc-ds1307
Use DS3231 ! O Modulo DS1307 não é preciso.
http://labdegaragem.com/forum/topics/ajuda-rtc-ds1307
Isso tem que ser um comentario !
// Outra aba chamada alarme