Applicare isteresi a scatto relè.

salve, mi spiego:

Alimento un apparecchiatura, se nei primi 20 secondi una frequenza resta sotto i 18 hz
scatta un relè, se al 19° secondo supera i 17 hz viene inibito lo scatto.
Però in discesa, esempio provengo da 200 hz, il relè deve scattare sempre dopo 20s, ma sotto i 10 hz.
Senza isteresi l'ho fatto e va bene, ora chiedo un'idea per questo ulteriore passo.
Ho capito che il cuore del problema sta nel sapere se si è in fase crescente o decrescente della frequeza, penso che ci vorrà un segnalino che in base al suo valore, tipo, 0\1 mi cambi il valore della variabile
che sarà vagliata dall' "IF". Che ne pensate?

Grazie

quando raggiungi una frequenza (es. 200 Hz) imposti una flag che resetti solo al di sotto di un'altra frequenza (es.10Hz) così nella "if" sai se stai salendo o scendendo

Non capisco bene che cosa intendi… Per quello che riesco a capire, basta scrivere qualcosa del tipo:
if(f<17) {ON();}
if(f>20) {OFF();}

Se ho capito bene hai un ingresso a frequenza variabile e un relè. Vuoi che il relè si ecciti/disecciti se per 20 secondi è rispettata una condizione. Nel caso di eccitazione la condizione è che la frequenza sia minore di 18hz, mentre nella diseccitazione la frequenza deve essere inferiore a 10hz. È corretto?
Ammettendo che lo sia un codice fatto così dovrebbe andare:

//Tutte le variabili citate sono globali, o static.
//in loop()
int frequenza=LeggiFrequenza (pin);
if (Releattivo() && frequenza<SOGLIASPEGNIMENTO)//se devo spegnere
{
  if (!flagspegni)//se è la prima volta che entro devo settare millis
  {
    startspegni=millis();//lo faccio
    flagspegni=1;//mi segno che sono entrato
  }
  else if (millis()-startspegni>20secondi)//se è passato il timer (non so se serve veramente l'else)
  {
    Spengorele();//agisco
    flagspegni=0;//e mi dimentico di essere entrato
  }
}
else
{
  flagspegni=0;//Se non devo spegnere abbasso la flag dimenticandomi che sono entrato
}
//puoi indovinare l'accensione

Silente:
Se ho capito bene hai un ingresso...

Si è così, adesso mi studio il tuo codice
poi lunedì lo provo e faccio sapere, intanto grazie a tutti.

Manca l'isteresi...
Stilita, ci puoi dire per che cosa ti serve?