Orologio \ Sveglia DCF77 RTC 6 digit 7 segmenti

Per leggere i bottoni ho pensato a questo codice, siccome vorrei dividere tutto il programma in funzioni, senza caricare tutto nella funzione loop.

#define KEY A0                                    /* KEYBOARD pin analogico dei 4 pulsanti */
#define SWa A1                                    /* SWITCH Alarm pin analogico dell'interruttore della sveglia */

int KEYBOARD = 0;                                 /* salva i valori della tastiera per poi confrontarli */
byte SWalarm = 0;                                 /* salva i valori dell'interruttore per poi confrontarli */

void readKEYBOARD(){                              /* legge i valori dei 4 bottoni e dell'interruttore */
  KEYBOARD = analogRead(KEY);                     /* salvo nella variabile KEYBOARD il valore del pin analogico 0, cioè dei 4 bottoni */
  if (KEYBOARD < 60) {return 1;}                  /* se minore di 60 ritorna il valore 1 */
  /* Time \ Date */
  else if (KEYBOARD < 200) {return 2;}            /* se nessuno dei casi precedenti e minore di 200 ritorna il valore 2 */
  /* Alarm */
  else if (KEYBOARD < 400) {return 3;}            /* se nessuno dei casi precedenti e minore di 400 ritorna il valore 3 */
  /* Snooze */
  else if (KEYBOARD < 600) {return 4;}            /* se nessuno dei casi precedenti e minore di 600 ritorna il valore 4 */
  /* Time Zone */
  return 0;                                       /* in ogni altro caso ritorna il valore 0 */       
  SWalarm = analogRead(SWa);                      /* salvo nella variabile SWalarm il valore del pin analogico 1, cioè dell'interruttore */
  if(SWalarm > 511) {return 5;}                   /* se l'interruttore è acceso fai questo */
  else return 6;                                  /* se l'interruttore è spento fai questo */
}

void loop()}{
  readKEYBOARD();                                 /* legge i valori dei 4 bottoni e dell'interruttore */
}

Naturalmente i valori per dividere i bottoni li deciderò quando proverò il circuito e al posto di ritornarmi i numeri vorrei dare delle istruzioni.

Volevo sapere se ci sono metodi migliori per questa gestione.

Inoltre volevo un parere su quale RTC utilizzare e su quale modulo DCF77 usare.
Siccome i PCB me li faccio io, per me non è un problema inserire il circuito elettronico dell'RTC direttamente sulla mia scheda, anche con il porta batteria. Mi basta avere uno schema elettrico e le sigle dei componenti per vedere i datasheet. Per quanto riguarda il modulo DCF77 invece credo che ci siano sei filtri dentro e preferirei prenderlo già fatto (e quindi funzionante) perché so che è delicato e il segnale poche volte si riceve. Magari una schedina che posso connettere con i connettori a strip.

Per quanto riguarda la gestione del DCF77 pensavo di usare l'apposita libreria DCF77 che però non ho capito se utilizza un pin specifico o meno, mentre per il modulo RTC lo vorrei usare via i2c. Non ho una libreria a portata di mano, ma ho visto già alcuni progetti con moduli RTC.