Si ma a parte che il metodo è meno "leggibile" (ossia devi calcolare i secondi degli "allarmi"), tu stai usando un valore intero:
int muoviservo = (hour*3600) + (minute*60) + second;
Ti faccio notare che, a parte il nome della variabile (che c'entra "muoviservo"? Quello che calcolo è l'orario corrente...), "hour*3600
" supera la capacità di un intero (32.767) già dalle 10, visto che 10*3600
fa 36.000. Quindi nessun "int" potrà mai avere i valori che hai indicato (45.300, 45.420, 45.540) e quindi la "if()" non funzionerà mai.
Devi usare un "long" (o "unsigned long") e forzare il calcolo su questo formato:
unsigned long oraCorrente = (hour*3600UL) + (minute*60UL) + second;
Tutto questo sebbene sia comunque corretto quello che ha consigliato Guglielmo ovviamente, ma col mio metodo diventa più facile.