Ciao Ragazzi, questo è il mio primo post sul forum anche se è già qualche mese che vi leggo, vi scrivo perchè ho un problema su cui è due giorni che sto perdendo la testa:
ho una fotoresistenza che attiva un output e che dopo 10 secondi lo deve disattivare se il valore della fotoresistenza è ritornato ottimale, ma non riesco a farlo funzionare, per ora l'ultimo codice che ho scritto è:
unsigned long timer_illuminazione = 0;
int illuminazione = 11;
void setup()
{
pinMode (illuminazione, OUTPUT);
}
void loop ()
{
int fotoresistenza = (analogRead, A0);
if (fotoresistenza<700)
{
timer_illuminazione = millis();
digitalWrite(illuminazione, HIGH);
}
if (timer_illuminazione>10000 && fotoresistenza>700)
{
digitalWrite(illuminazione,LOW);
timer_illuminazione=0;
}
}
Problema HW lo escluderei, il circuito è come questo, montato però su un arduino UNO R3
Ho provato a cercare un po in giro come dovrebbe funzionare millis in questa situazione, ma in tutta sincerità ho una gran confusione in testa al momento...
Ora come ora il circuito accende il led se la luminosità cala, ma quando poi si rialza invece di aspettare che timer_illuminazione = millis() raggiunga i 10 secondi impostati spegne subito il led...
Ho provato il codice che mi hai consigliato e funziona, però non è ancora tutto a posto: la luminosità esterna si abbassa, accende la luce, poi però ho notato che i 10 secondi li conta dal momento in cui la luminosità esterna ritorna sopra al valore stabilito (700 in questo caso) se rimane sotto anche se passano i 10 secondi rimane accesa l'illuminazione, nel momento in cui la luce ritorna sopra i 700 conta 10 secondi e spegne l' illuminazione
mmm provato ma non funziona, ora rimane sempre HIGH anche perchè non riesco a capire come possa verificarsi "if (millis()>timer)" nella seconda parte di codice se timer = millis() + 10000
OK. Hai una mezza dozzina di esempi diversi di codice.... quand'è che ci fai vedere un tuo codice aggiornato?
Dopo la prima pubblicazione, ti sei limitato a dire "no, non funziona.." ma... non è che possiamo fartelo noi, eh
Lo so lo so solo che causa lavoro durante la settimana non riesco a mettermici sul serio, ho trovato giusto il tempo di provare i codici che mi avete suggerito per vedere se funzionano e ho provato ad invertire un segno nell'ultimo che mi hai dato, nel fine settimana o una di queste notti provo a quello del ragazzo qui sopra poi nel caso provo qualche modifica/mix degli altri qui sopra e vi aggiorno