El DS3231 mantiene la hora en un proyecto sin necesidad de alimentar el Arduino, ya que tiene una batería interna que le permite funcionar años sin alimentación exterior.
Cuando este módulo se pone en hora se mantiene con gran precisión, de forma que si se vuelve a alimentar el proyecto, este estará en hora a pesar de haber estado apagado un tiempo.
El montaje es el siguiente:
El código para poner en hora nuestro Arduino es el que aparece a continuación. Para poder usarlo, primero hay que descargarse la libreria RTClib.
#include <Wire.h> //llamado de libreria
#include "RTClib.h" //llamado de libreria DS1307
RTC_DS1307 RTC;
void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
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();
delay(950);
}