Control de bomba de agua a partir de un sensor y relay

Hola, soy nuevo y actualmente estoy intentando hacer un sistema de llenado automático a partir de un relay TONGLING JQC-3ff -s-z y un sensor de ultrasonido SN-SR04T-2.0 y mi problema principal es a partir del relay, la idea es que el sensor mida el nivel del agua, cuando el estanque este vació, se acciona el relay para que cierre el circuito y encienda la bomba de agua hasta que se llene el estanque y a partir de un condicional se abra el circuito. El sensor funciona sin problemas, pero el problema es que el led que indica si el relay esta accionado, este se enciende sin problemas cuando la condición es de bajo nivel de agua, probé con una lampara y enciende, pero en el condicional de estanque lleno, la luz del led se apaga del relay, pero la lampara sigue encendida. Probé con el código básico de prueba y la lampara se apaga y se enciende a cierta frecuencia sin problemas, pero al tratar de usar mi código no funciona como quiero.

#include <NewPing.h>
#include <MedianFilter.h>
#include <Wire.h>
#include <MedianFilter.h>
#include <LiquidCrystal.h>
#include <avr/wdt.h> // Incluir la librería de ATmel
#define TRIGGER_PIN  10  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     9  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 450 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

MedianFilter filter(31,0); // filtro para eliminar ruido
int relay =13;

void setup() {
  
  Serial.begin(9600); // Open serial monitor at 115200 baud to see ping results.

  lcd.begin(16, 2);  //Inicializamos la pantalla

  //wdt_disable(); 
 // wdt_enable(WDTO_2S);
  
 // pinMode(relay,OUTPUT);
}

void loop() {
  
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  unsigned int o,uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).

  filter.in(uS);
  o = filter.out(); // valores de señal de retorno en microsegundos 
 // Serial.print("Ping: ");
 // Serial.print( o / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
 // Serial.println("cm");  
 // US_ROUNDTRIP_CM cambio de tiempo a distancia 
  //wdt_reset();
  // mostramos los valores en pantalla 
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Distancia:");
  lcd.setCursor(10, 0);
  lcd.print( o / US_ROUNDTRIP_CM);   //Sacamos el texto por pantalla
  lcd.setCursor(14, 0);
  lcd.print("cm");

  if ( o / US_ROUNDTRIP_CM >= 100)
  { 
    digitalWrite(relay,HIGH);
    Serial.print("Encendido");
   // delay(20);
  }
 
  else if ( o / US_ROUNDTRIP_CM <= 30)
  {
    digitalWrite(relay,LOW);
    Serial.print("apagado");
   // delay(20);
  
  }

  //digitalWrite(relay,HIGH); // acciona el relay
  //delay(1000);
  //digitalWrite(relay,LOW); // lo desactiva el relay 
  //delay(1000);
 
}

Hi,

Posiblemente es que es relay esta invertido. Cuando la salida esta en cero la luz verde prende y el relay esta cerrado. Invierte la condicion del if cuando dices high cambialo a low y el de low a high. Mira a ver si resuelve el problema.