Histeresis o tolerancia

Con esta función le aplico la histeresis o el retardo en actuar a un rele:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // 0x27 es la direccion del LCD 16x2

int tolerancia = 5;

void setup() 
  {
  lcd.init();
  lcd.backlight(); //enciende la iluminacion 
  }

void loop() 
  {
    lcd.clear();
    lcd.setCursor(5, 0);
    lcd.print ("Tol. ");
    lcd.print (tolerancia);
    entra (random(-10, 10) );
    delay(2000);
  }
  
void entra (int x)
  {
    if (((x >= 0) && ( x <= tolerancia)) || ((x <= 0) && ( x >= (tolerancia - (tolerancia * 2)))))
      {
      lcd.setCursor(0, 0);
      lcd.print(x);
      lcd.setCursor(0, 1);
      lcd.print("Entra");
      }
      else
      {
      lcd.setCursor(0, 0);
      lcd.print(x);
      lcd.setCursor(0, 1);
      lcd.print("No Entra");
      }
  }

Un saludo.

Creo que la función que postee anteriormente no funciona ni hace lo que tenia que hacer correctamente, sorry :blush: la culpa la tienen demasiadas horas delante del ordenador.

Creo que ahora funciona bien y la solución era mucho mas sencilla:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // 0x27 es la direccion del LCD 16x2

int tolerancia = 5;

void setup() 
  {
  lcd.init();
  lcd.backlight(); //enciende la iluminacion 
  }

void loop() 
  {
    Histeresis (random(-10, 10), random(-10, 10), tolerancia );
    delay(2000);
  }
// x = Es un valor fijo, por ejemplo el que hemos programado o estipulado.
// y = Puede ser el valor obtenido por una sonda.
// t = La tolerancia o magen que hemos estipulado, la histeresis.

void Histeresis (int x, int y, int t)
  {
    lcd.clear();
    lcd.setCursor(0, 1);
    lcd.print("X: ");
    lcd.print(x);
    lcd.print(" Y: ");
    lcd.print(y);
    lcd.setCursor(0, 0);
    lcd.print("Tol: ");
    lcd.print(t);
    lcd.setCursor(6, 0);

    int superior, inferior = 0;
    superior = x + t; //valor fijo + tolerancia
    inferior = x - t; //valor fijo + tolerancia
    if ((y >= inferior) && (y <= superior))
      {
      lcd.print(" Si");
      }
      else
      {
      lcd.print(" No");
      }
  }

Un saludo.