I would like you to re-consider this part of your code:
void loop()
{
//Missing code
if(now.second()==00) {
//Missing code
}
delay(1000);
}
This may become a problem if the call to delay "hits" just before (few millis) RTC seconds turnes to 0 since this could cause a reading to be lost. Instead you should use something like:
//Other code
byte lastMinute = 0xFF; //Initialize to an impossible value
//Other code
void loop()
{
//Missing code
if(now.minute() != lastMinute) {
lastMinute = now.minute();
//Missing code
}
delay(1000);
}
Doing it this way, you will never loose a reading. Good luck