Projeto de Horta inteligente usando sensor Ultrassonico HC-SR04 e relé para acionar válvula solenóide

Olá a todos.
Sou um amante de arduino e uso no meu dia a dia, principalmente no meu sítio, para irrigar automaticamente as hortas.
Sempre usei aqueles sensores de umidade, mas depois de um tempo ele ficam oxidados e deixar de fazer leituras.

Por isso tive a idéia de usar um sensor ultrassonico HC-SR04. Se ele estiver apontado para um planta sensível específica, quando ela estiver seca e dobrar, seu tamanho vai diminuir.
Nesse ponto posso configurar para ele acionar um relé, que aciona uma válvula solenoide e irriga a horta.

Não achei nenhum projeto específico disso e por isso fiz a mistura de dois skecthes que encontrei…

ele tá quase funcionando, mas não está ligando e desligando o rele de acordo com as variáveis de Centímetros. A porta serial está lendo a distancia em centimetros, mas isso não está fazendo o rele ligar ou desligar.

alguém poderia olhar o codigo e mostrar onde estou errando? muito obrigado!

#include <NewPing.h>

#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
#define relayPin 7
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

// defines variables
long duration;
int distance;
long distancemm;

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

pinMode(TRIGGER_PIN, OUTPUT); // Sets the trigPin as an Output
pinMode(ECHO_PIN, INPUT); // Sets the echoPin as an Input
pinMode(relayPin, OUTPUT);// Control Pin
}

void loop() {
delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println(“cm”);

digitalWrite(TRIGGER_PIN, 20);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(TRIGGER_PIN, 25);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, 23);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(ECHO_PIN, 10);
// Calculating the distance
distance= duration0.034/2;
distancemm = distance
10+30;

//Control
if (distancemm <= 20)
{
for (int i=0; i <= 50; i++){
digitalWrite(relayPin, HIGH);
delay(10);
}

}
else if (distancemm >= 32)
{
digitalWrite(relayPin, LOW);
}
else
{
//Safe! Continue usual tasks…
}

// Prints the distance on the Serial Monitor
//Serial.print("Distance: ");
//Serial.println(distance);
//Serial.print("Distance: ");
//Serial.print(distancemm);
//Serial.println(“mm”);
delay(250);
}