Problema para reiniciar un contador con la fecha

bueno hice un contador de personas y intento reiniciar el contador cuando acabe el dia mediante la hora pero no me funciono, no se si mi logica este bien y podran ayudarme o darme una idea para solucionarlo.

#include <Ultrasonic.h>
#include <Wire.h> // incluye libreria para interfaz I2C
#include <RTClib.h> // incluye libreria para el manejo del modulo RTC

RTC_DS3231 rtc; // crea objeto del tipo RTC_DS3231



const int Trigger = 2;   //Pin digital 2 para el Trigger del sensor
const int Echo = 3;   //Pin digital 3 para el Echo del sensor
int cont=0;
int estado=0;

void setup() {
 Serial.begin(9600);//iniciailzamos la comunicación
 
 //reloj
  if (! rtc.begin()) { // si falla la inicializacion del modulo
Serial.println("Modulo RTC no encontrado !"); // muestra mensaje de error
while (1); // bucle infinito que detiene ejecucion del programa
}
rtc.adjust(DateTime(__DATE__, __TIME__)); // funcion que permite establecer fecha y horario
// al momento de la compilacion. Comentar esta linea
// y volver a subir para normal operacion
//fin reloj

 pinMode(Trigger, OUTPUT); //pin como salida
 pinMode(Echo, INPUT);  //pin como entrada
 digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
 }

void loop()
{


 long t; //timepo que demora en llegar el eco
 long d; //distancia en centimetros

 digitalWrite(Trigger, HIGH);
 delayMicroseconds(100);          
 digitalWrite(Trigger, LOW);
 
 t = pulseIn(Echo, HIGH); 
 d = t/59;             
 
 if (d<=60)
 {
   cont++;
   estado = HIGH;
   while(d <=60 && estado == HIGH )
   {
     digitalWrite(Trigger, HIGH);
     delayMicroseconds(200);         
     digitalWrite(Trigger, LOW);
 
     t = pulseIn(Echo, HIGH); 
     d = t/59; 
     if(d>100)
     {
         estado=LOW;
     }
   
   }

 }

if (hour =0)
 {
cont=0
}
 
 //reloj
 DateTime fecha = rtc.now(); // funcion que devuelve fecha y horario en formato
// DateTime y asigna a variable fecha
Serial.print(fecha.day()); // funcion que obtiene el dia de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.month()); // funcion que obtiene el mes de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.year()); // funcion que obtiene el año de la fecha completa
Serial.print(" "); // caracter espacio en blanco como separador
Serial.print(fecha.hour()); // funcion que obtiene la hora de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.print(fecha.minute()); // funcion que obtiene los minutos de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.print(fecha.second()); // funcion que obtiene los segundos de la fecha completa


 //fin
 Serial.println();
 Serial.println("Distancia: ");
 Serial.println(d);      
 Serial.println("cm");
 Serial.println();
  Serial.println("Pasajeros que ha subido: ");
 Serial.println(cont);
delay(1000);  
Serial.println();  
}

Hola Joadva, luego de obtener la fecha con rtc.now() te recomiendo trabajar con el metodo fecha.unixtime() que es el numero de segundos transcurridos desde el 1-ENE-1970 llamada tiempo Unix.

Como cada dia tiene 24x60x60 = 86400 segundos tu podrias probar si son las 0:0:0 horas de cualquier dia facilmente.

if (fecha.unixtime()%86400 == 0){
   count =0;
}

Otro tema para terminar un bucle while mejor usas break;