Orologio con Alba/Tramonto da calcoli astronomici

int alba_tramonto_HM[4];

void setup()
{
 
 Serial.begin(57600);
 omega = omega/deg_rad; //few conversion

for(int i=0; i<5; i++)
   alba_tramonto_HM[i] = 0;
}

premetto che non ho letto tutto... e perdonami se te lo hanno detto... però...
int alba_tramonto_HM[4] è un array di 4 interi, con posizioni 0, 1, 2, 3
nel setup te fai

  for(int i=0; i<5; i++)
    alba_tramonto_HM[i] = 0;

e vai a prendere anche la posizione 4 dell'array che non esiste....

questo è dovuto ai cosiddetti magic number, nel caso 4 e 5... usa mooooooolte macro (#define) così eviti questi problemi... e soprattutto il codice è più leggibile anche a posteriori... specialmente da te ;D

come nella dichiarazione di variabili iniziali... hai scritto float omega = 0.9863; //(= 360/365) [gradi/giorno] -> gradi per ogni giro / giorni_anno
qui, imho, era meglio fare 2 macro (gradi per ogni giro e giorni all'anno) e anzi che scrivere quel numero (0,9863) mettere una classica divisione, con dividendo e numeratore come macro...
sempre imho ovviamente ::slight_smile: