Timbre de una alarma arduino

Tengo un code no soy muy bueno soy principiante estoy tratando de hacer que se accione el timbre el los horarios establecidos, lo he estado modificando pero aun no lo consigo modificar.

#include <Wire.h> 
#include "RTClib.h"

RTC_DS1307 RTC;                   // inicializa el modulo RTC
const int timbre = 7;             // Pin 7 encargado de activar el timbre, se conecta al Rele
int segundo;
int minuto;
int hora;
int tiempo_timbre=10000; // Tiempo continuo que dura el timbre sonando, en milisegundos 5000 = 5 segundos

//////////////////////////////// Horario 1 /////////////////////////
// Hora en la que suena el timbre escrito  h1=Hora, m1=Minutos, s1=Segundos
// Cuando no se programa ninguna hora se debe dejar escrito el numero 99  
// se pueden programar 16 timbres por cada horario, _c1 indica que es el horario 1
int h1_c1=16;   int m1_c1=12;   int s1_c1=0;
int h2_c1=7;   int m2_c1=45;  int s2_c1=0;
int h3_c1=8;   int m3_c1=30;  int s3_c1=0;
 
////////////////////////////////// Void Setup() ///////////
void setup () { 
  
 pinMode(timbre, OUTPUT);                    // Configura como salida el pin 7
 Wire.begin();                               
 RTC.begin();                                // Inicia la comunicaci¢n con el RTC
 
// RTC.adjust(DateTime(__DATE__, __TIME__)); // Lee la fecha y hora del PC (Solo en la primera carga)
                                             // el anterior se usa solo en la configuracion inicial luego se pone como comentario
                                             // y se vuelve a cargar el programa sin esa linea.
 Serial.begin(9600);                         // Establece la velocidad de datos del puerto serie a 9600                           // Borra el  LCD
} 
////////////////////////////////// Void loop() ///////////
void loop(){
 DateTime now = RTC.now();          // Obtiene la fecha y hora del RTC


 Serial.print(now.hour(), DEC);  // Horas
 Serial.print(':');
 Serial.print(now.minute(), DEC); // Minutos
 Serial.print(':');
 Serial.print(now.second(), DEC); // Segundos
 Serial.println();
 segundo=now.second();
 minuto=now.minute();
 hora=now.hour();


 
 digitalWrite(timbre, LOW);     // apaga el timbre
 delay(500);                    // La informaci¢n se actualiza cada 1/2 seg.
}   //////////////////////////////// Fin del void loop(), inician las Funciones/////////////////////////

/////////////////////Condicional del Horario 1  //////////////////////////////////
void horario_1(){ 
   Serial.print("Horario_1 ");
   if ((hora==h1_c1) && (minuto==m1_c1) && (segundo==s1_c1))  activar_timbre();
   if ((hora==h2_c1) && (minuto==m2_c1) && (segundo==s2_c1))  activar_timbre();
   if ((hora==h3_c1) && (minuto==m3_c1) && (segundo==s3_c1))  activar_timbre();
}

/////////////////////////////// Funcion que activa el Timbre //////////////////////////////////
void activar_timbre(){
    digitalWrite(timbre, HIGH); 
    Serial.println("Timbre Activo");
    delay(tiempo_timbre); 
}

Para operar con tiempos es mejor aprovechar las ventajas de la libreria RTCLib.h que son muy buenas.

Lo primero es trabajar en segundos. Por ejemplo para fijar la hora de alarma a las 8:30:45

unsigned long alarma1 = 8*3600 + 30*60 + 45;

El siguiente paso es preguntar la hora en segundos.

DateTime hoy = RTC.now();
if (hoy.unixtime() % alarma1 == 0){
   digitaWrite(timbre, HIGH);  //Prende timbre
}
if (hoy.unixtime() % (alarma1 + 30) == 0){
   digitalWrite(timbre, LOW);   //Apaga timbre luego de 30 seg
}

Solo para que te quede claro el metodo .unixtime() calcula la fecha y hora en segundos desde el 1-ENE-1970 de modo que cada dia a la hora de tu alarma el modulo % (resto de una division) dara 0 a la misma hora.

Si no quieres que suene los sabados y domingos añades esa condicion usando el metodo .weekday().