settare rtc

Ciao, ho un ds1302 che funziona regolarmente. Quando però stacco l’alimentazione nonostante la batteria tampone la data perde qualche giorno. Questo succede se lascio spento il tutto per giorni.
Per settare la data devo farlo per forza in fase di upload dello sketch oppure si può fare anche tramite per esempio dei pulsanti (da impostare logicamente)?

Puoi impostare data e ora anche da sketch.
Devi prevedere una qualche forma di inserimento dei valori, tramite tastierino o tramite pulsanti.
Una volta inseriti i valori puoi impostare data e ora con le stesse funzioni che usi adesso.

Sto provando così

 char c; 

 
 myFile3 = SD.open("test.txt", FILE_READ);
 if (!myFile3) Serial.println("file non trovato"); 
 else {
   while (myFile3.available()) {
     
         c = myFile3.read();
         
         Serial.print(c);   
         rtc.setTime(c) ;                      
        
          
     }           
   }

Mi da questo errore
no matching function for call to 'DS1302::setTime(char&)'

eppure se stampo c sulla seriale stampa esattamente il valore presente nella sd 11,30,30

se metto manualmente rtc.setTime(11,10,10) ; funziona tutto
se invece cerco di impostare tramite una variabile errore

C'è qualcosa che non va nel tuo codice...
Leggi un carattere alla volta dal file e chiami la setTime con solo quel carattere. Dovresti leggerli tutti e metterli in una stringa e poi passare la stringa alla funzione per impostare l'ora.

però Serial.print(c) stampa correttamente l’intera stringa che c’è dentro la sd

Non lo metto in dubbio.
Tu leggi correttamente tutti i caratteri sulla SD, però li leggi (e li stampi su seriale) uno alla volta.
Hai 2 possibilità:

  • vedere se c'è un'istruzione che legge da SD tutta la stringa fino a fine-riga e poi passare la stringa letta alla setTime
  • andare avanti sulla strada che hai preso, però i signoli caratteri che leggi li metti in una stringa (array di char) e poi passi la stringa alla setTime

Sì, ma te la stampa un carattere alla volta. Prova a cambiarla in println!