biohazard91:
quindi, se ho capito bene.... con l'RTC faccio un IF che quando arriva a 00:00:00 fa in modo che mi resetti la variabile tTime
NO, in realtà io uso il DS1307 solo per "rimettere" ogni X minuti (es. una volta l'ora) il mio contatore di decimi di secondo che però è del tutto indipendente dal DS1307.
Per un oggetto banale come questo, rimettendo l'orario ogni X minuti/ore, la precisione della millis() è più che sufficiente ... ti do un estratto dal codice :
void loop() {
...
// Update the clock variable
if ((millis() - lastMillis) >= 100) {
lastMillis = millis();
tTime++;
if (tTime >= 432000) tTime = 0; // IF 12 hours, reset from 0
showTIME(); // Update the neoPiexel Array
}
...
}
... come vedi, in realtà, lavoro sempre a 12 ore, tanto ... non hai la visualizzazione del valore numerico e considerare solo 12 ore è più semplice.
biohazard91:
... quel % 24 lo sostituisco con il 16 che è il numero dei pin del ring...
Non basta ... devi calcolarti anche i valori delle divisioni
Quelli sono validi per 24 LED ... guarda i commenti ...
Guglielmo