problema visualizzazione minuti su adafruit neopixel16x

Ciao biohazard91,
ultimamente mi sono divertito a fare un po' di questi orologi con i neoPixel ... oggetti molto simpatici, ne ho fatti con il ring a 12 LED, con quello a 24 LED e con i quello a 60 LED (4 semicerchi da 15 LED ... QUESTI).

Per evitare i problemi che stai incontrando tu e poter fare una cosa generica (ho fatto un unico stampato con ATtiny85 e un DS1307) indipendente da quale dei tre tipi di ring usi, la cosa più semplice NON è lavorare come fai tu in ore, minuti e secondi, ma sempre e solo in secondi ... anzi, meglio, per avere un aggiornamento più corretto del ring, in decimi di secondo.

In questo modo hai sempre numeri interi con cui giocare e puoi facilmente fare una formula che ti identifica quale led accendere :wink:

Per chiarezza ti faccio un esempio semplice, preso dalla prima versione del mio programma, che era nata solo per il neoPixel a 24 LED ... poi l'ho resa generica, ma è un po' più complessa e meno adatta ad una spiegazione ... :grin:

Come ti dicevo io ho una variabile "unsigned long int" che mi conta i decimi di secondo e che riparte da 0 a mezzanotte. Ti servono poi tre variabili che ti indicheranno quale LED devi accendere delle per le ore, per i minuti e per i secondi ...
... tTime è la varibile che contiene i decimi di secondo, ssLED, mmLED, hhLED, indicano il numero di LED da accendere ...

ssLED = (tTime / 25) % 24;              // On 24 LEDs, 1 LED = 2,5 secs  =   25 tenths
mmLED = (tTime / 1500) % 24;            // On 24 LEDs, 1 LED = 2,5 mins  =  150 secs = 1500 tenths
hhLED = (tTime / 18000) % 24;           // On 24 LEDs, 1 LED = 1/2 hour  = 1800 secs = 18000  tenths

I commenti parlano da soli ... come vedi molto semplice e decine di volte più compatta di quella serie di IF che ... hai dovuto fare tu XD XD XD

Certo comunque che come ring, per fare un orologio, hai scelto il peggiore (... per numero di LED) ... :roll_eyes:

Guglielmo