the good the bad and the mills()...

alphagamma:

quindi dopo che sono trascorsi 5 millisecondi il valore time viene a prendere un valore maggiore della lettura_luce_time + 5 millisecondi entrando di fatto nel ciclo if.

non ho capito il perchè, :blush: scusa son di coccio....
se time= millis() e lettura_luce= millis() e quindi se millis= 3 come è possibile che time è maggiore di lettura_luce+5...scusate l'insistenza :roll_eyes:

perchè time corre dietro a millis ogni ciclo che fai, perchè letturaluce rimane "indietro" e perchè millis aumenta ogni millisecondo inesorabilmente... per fartela semplice succede che all'interno di arduino (ma anche di tanti altri processori...) c'è un timer che ogni tot alza un cosidetto interrupt. Quando scatta questo "allarme" il processore smette per un attimo di fare il ciclo loop che hai scritto tu ed esegue la procedura di interrupt che nel caso specifico aggiorna il millis... tu non hai fatto l'istruzione di aggiornamento del millis ma il processore sa che deve farla e la fa cascasse il mondo senza dirti nulla. quindi dopo un millisecondo che tu stai facendo tranquillo il tuo ciclo loop il millis viene incrementato e quindi quando tu fai l'istruzione time = millis lui si ritrova con il time più grande di 1 mentre il letturaluce rimane da aggiornare...dopo 5 millisecondi il time diventa più grande del letturaluce e viene eseguito l'if