Crepuscolare, isteresti al posto del delay

Salve a tutti, sto seguendo questo codice per un crepuscolare:

const int sensorValue = 350; //imposto il valore del sensore
int ledPin = 5; // led pin 5

void setup(){ 
pinMode(ledPin,OUTPUT); // imposta il piedino 5 come uscita
}
void loop() {
int sensor = analogRead(A0); // leggo il sensore
if (sensor > sensorValue) {
digitalWrite(ledPin,LOW); //spento
delay(1000); 
}else{
digitalWrite(ledPin,HIGH); //accesp
delay(1000); 
}
}

il problema è che ad una determinata luce, mi inizia a lampeggiare.. che riga dovrei aggiungere o modificare per risolvere, grazie a tutti.

>UFOSTUFO: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Grazie :slight_smile:

Guglielmo

Grazie, sei gentilissimo

Potresti definire una soglia e controllare se sensor è maggiore di sensorValue + soglia oppure minore di sensorValue - soglia.
Oppure fare una media di N letture e confrontare la media con sensorValue.

Grazie

Per l'isteresi basterebbe avere DUE soglie, con valori tra loro leggermente distanti, ossia una cosa del tipo:

#define ISTERESI 10
const int sensorValueHigh = 350 + ISTERESI;
const int sensorValueLow = 350 - ISTERESI;

...
  if (sensor > sensorValueHigh) {
    digitalWrite(ledPin,LOW); //spento
    delay(1000); 
  }
  if (sensor < sensorValueLow) {
    digitalWrite(ledPin,HIGH); //accesp
    delay(1000); 
  }