Ciao linomari, e benvenuto sul forum di Arduino.
Se tu avessi letto il regolamento, e magari anche il post che trovi all'inizio di questa sezione dal titolo 'aiutaci ad aiutarti' ti saresti già portato avanti con il lavoro. Parli di sketch, pulsanti, display, funzioni, ma non vediamo ne il codice ne i collegamenti, quindi capisci, così è difficile aiutarti.
Comunque ti posto una funzione di esempio, che puoi eventualmente riadattare per i tuoi scopi:
void set_time(){
rtc.refresh();
uint8_t ore = rtc.hour();
uint8_t minuti = rtc.minute();
uint8_t secondi = rtc.second();
uint8_t cur_set = 0;
int8_t e = 0;
bool lp = true;
LCD_TIMER.stop();
lcd_clear();
lcd_print_str(0,"%s", " IMPOSTA ORARIO");
lcd_print_str(1,"%s"," ORA MIN. SEC.");
while(lp){
snprintf(lcd_buf[2],LCD_COLS," %02i %02i %02i",ore,minuti,secondi);
pad_buffer[2];
upd_rows[2] ++;
e = check_enc();
if(enc_btn.check() == ON) cur_set++;
if(cur_set == 3) lp=false;
switch(cur_set){
case 0: //set hour
snprintf(lcd_buf[3],LCD_COLS," %c%c",UP_ARW,UP_ARW);
if(e > 0 && ore < 24) ore++;
if(e < 0 && ore >= 1) ore--;
break;
case 1: //set minute
snprintf(lcd_buf[3],LCD_COLS," %c%c",UP_ARW,UP_ARW);
if(e > 0 && minuti < 60) minuti++;
if(e < 0 && minuti >= 1) minuti--;
break;
case 2: // set sec
snprintf(lcd_buf[3],LCD_COLS," %c%c",UP_ARW,UP_ARW);
if(e > 0 && secondi < 60) secondi++;
if(e < 0 && secondi >= 1) secondi--;
break;
};
pad_buffer(3);
upd_rows[3] ++;
update_lcd();
}
rtc.refresh();
rtc.set(secondi,minuti,ore,0,rtc.day(),rtc.month(),rtc.year());
LCD_TIMER.start(LCD_TIMER_SET);
}
Purtroppo ho la brutta abitudine di non scrivere commenti nel codice, comunque nel mio caso ogni volta che premo enc_btn incremento una variabile, che poi serve anche ad altre cose. Quando la variabile (cur_set) raggiunge il valore di 3 è ora di uscire, quindi setto lp a false ed esco dal while. A te basta settare a false lp quando premi il tuo bottone.
Si lo so, non sono il massimo della chiarezza, ma e tardi e sono stanco.
Spero ti possa essere d'aiuto, e, cortesemente, leggi le cose che ti ho suggerito all'inizio, così capisci come postare codice, immagini, etc.
Ciao, Ale.