2 ultrasónicos 2 servos en un arduino

Este es el código resultante que funciona correctamente.
ahora el problema que tengo es que al activar bomba de agua con el flotador electrónico genera problemas no se si con los servos o con los ultrasionicos que se vuelven locos y se abren y cierran las puertas de manera muy errante.
El flotador con la bomba están independientes del código, es decir solo lo tengo funcionando como un simple push button que activa o desactiva la mini bomba de agua.

aqui el codigo.

#include <Ultrasonic.h> //libreria para ultrasonico
#include <Servo.h> //libreria servo
#include <Bounce2.h> //librería anti rebote

const byte trigPin1 = 11; //pin trig del primer sensor
const byte echoPin1 = 10; //trig echo primer sensor
const byte trigPin2 = 6; //pin trig del segundo sensor
const byte echoPin2 = 5; //trig echo segundo sensor
const byte BOTON = 3; // define BOTON en el pin 3
const byte LED1 = A5; // define LED 1 en A5
const byte LED2 = 2; // define LED 2 en pin2
Bounce debouncer2 = Bounce(); // Crea la instancia del rebote

Servo puerta_croquetas; //nombro servos
Servo puerta_agua;
Servo sinfin;
bool val, valAnt = true; //define valor anterior como verdadero
bool flag1 = true, flag2 = true; //define variables flag1 y flag2 como verdaderas

void setup() {
Serial.begin (9600); //inicia monitor serial
pinMode(trigPin1, OUTPUT); //declara entradas y salidas de sensores
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
puerta_croquetas.attach(4); // Indica servo croquetas en pin 4
puerta_agua.attach(8); // Indica servo agua en pin 8

pinMode(BOTON,INPUT); // Define BOTON como entrada
debouncer2.attach(BOTON); // Lee el rebote del boton
debouncer2.interval(50); // interval in ms
sinfin.attach(9); //Servo sinfin en pin 9
}

void loop() {

debouncer2.update(); //Actualiza el rebote

//PUERTA CROQUETAS codigo para el primer servo
long duration1, distance1; // ajusta primer sensor

distance1 = ultrasonico(trigPin1, echoPin1);

if (distance1 >= 35 ){ // calcula distancia de detección primer sensor
puerta_croquetas.write(180); // envia servo a 180 si se cumple el paramentro de deteccion
if (flag1) {
Serial.println("S1 Out of range"); // imprime si esta fuera de rango
flag1 = false;
}
}
else {
puerta_croquetas.write(90); // envia servo a 90 si no detecta el sensor
Serial.print ( "Sensor1 "); // imprime distancia del sensor en cm
Serial.print ( distance1);
Serial.println("cm");
flag1 = true;
}

//PUERTA AGUA //codigo para el segundo servo
long duration2, distance2;
distance2 = ultrasonico(trigPin2, echoPin2);
if (distance2 >= 35){ // conciona la distancia de deteccion entre 1 y 35 cm
puerta_agua.write(180); //envia servo a 180 grados
if (flag2) {
Serial.println("S2 Out of range"); //imprime si esta fuera de rango
flag2 = false;
}
}
else {
puerta_agua.write(90); //envia servo a 90 grados
Serial.print("Sensor2 "); //imprime sensor 2
Serial.print(distance2); //imprime la distancia del sensor 2
Serial.println("cm"); //imprime cm
flag2 = true;
}

// SINFIN CON LEDS
// val = digitalRead(BOTON); //Lee el valor del BOTON

val = debouncer2.read(); //Lee el valor del rebote
if (val != valAnt) // Compara los valores actuales y anteriores del BOTON
Serial.println(val?"Boton ON":"Boton OFF"); //Imprime el estado actual del BOTON

if (val && !valAnt) { // veo transiciion de 0 a 1 o de NC a NO
Serial.println("Sinfin girando."); // Muestra dicha transición el el monitor serial
digitalWrite(LED1,HIGH); //Enciende LED1

digitalWrite(LED2,LOW); //Apaga LED2
sinfin.write(90); // Envia Servo sinfin a 90
}
if (!val && valAnt) { // transicion de 1 a 0 de NO a NC
Serial.println("Sinfin detenido"); // Muestra dicha transición en el monitor serial
digitalWrite(LED1,LOW); //Apaga LED1

digitalWrite(LED2,HIGH); //Enciende LED2
sinfin.write(0);
}
valAnt = val; //Iguala los valores anteriores y actuales de val
}

long ultrasonico(int trigger, int echo) {
long duration2, distance2; //ajusta segundo sensor

digitalWrite(trigger, LOW); //desactiva pin2
delayMicroseconds(2); // espera dos micrsegundos
digitalWrite(trigger, HIGH); //activa el pin 2
delayMicroseconds(10); // espera 10 microsegundos
digitalWrite(trigger, LOW); //desactiva pin2
duration2 = pulseIn(echo, HIGH); //calcula la duración de la señal
distance2 = (duration2/2) / 29.1; //calcula la distancia
return distance2;
}

long ultrasonico2(int trigger, int echo) {
long duration1, distance1; //ajusta segundo sensor

digitalWrite(trigger, LOW); //desactiva pin2
delayMicroseconds(2); // espera dos micrsegundos
digitalWrite(trigger, HIGH); //activa el pin 2
delayMicroseconds(10); // espera 10 microsegundos
digitalWrite(trigger, LOW); //desactiva pin2
duration1 = pulseIn(echo, HIGH); //calcula la duración de la señal
distance1 = (duration1/2) / 29.1; //calcula la distancia
return distance1;

}