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.