Bomba de alto vacio

Errores no le veo; o al menos porque desconozco el funcionamiento de los componentes.
Juzgando por los 6 MOSFETs... ¿estás creando un ESC para motores "brushless"? O podría ser un controlador de un paso a paso, pero para eso se requieren dos puentes H.

Optimizado pero conservando la "portabilidad", se me ocurre así:

#define analogPin1 A0
#define analogPin2 A1
bool hall1;
bool hall2;
 
void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
}
void loop() {
 
  hall1 = analogRead(analogPin1) >= 880;
  hall2 = (analogRead(analogPin2)+600) >= 860;

  if(hall1 && !hall2)  
  {
  digitalWrite(5, HIGH);
  digitalWrite(4, HIGH); 
  digitalWrite(3, LOW);
  digitalWrite(2, LOW);
  return;
  }
    
 if (!hall1 && hall2)
  {
  digitalWrite(5, LOW);
  digitalWrite(4, LOW); 
  digitalWrite(3, HIGH);
  digitalWrite(2, HIGH);
  return;
  }

  if(hall1 && hall2)  
  {
  digitalWrite(5, LOW);
  digitalWrite(4, HIGH); 
  digitalWrite(3, HIGH);
  digitalWrite(2, LOW);
  return;
  } else {
  digitalWrite(5, HIGH);
  digitalWrite(4, LOW); 
  digitalWrite(3, LOW);
  digitalWrite(2, HIGH);
  }
}

El código no es muy grande, optimizarlo fue rápido.

Si quieres ir más allá, reemplazaría los digitalWrite por "manipular el puerto" (al menos sé hacerlo en AVR).