Abrir y cerrar válvulas con puente h

hola!
Estoy controlando 2 valvulas con un puente h y quiero que mientras la valvula A este abierte la valvula B este cerrada para diferentes tiempos y con ciclos que se pueden repetir (un ciclo seria la suma de los tiempos de valvulas abiertas)
lo estoy intentando hacer con while pero no consigo hacerlas funcionar les dejo mi codigo

#define ENA  2
#define IN1 28
#define IN2 29
#define ENB  3
#define IN3 30
#define IN4 31
int Ciclos=5,Thipp, Thip=5,Tnorr,Tnor=5;
//Thip para el tiempo que abra la valvula A, Tnor para la B, Thipp,Tnorr sirven como contadores

void setup() 
{

Serial.begin(9600);
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
 
  pinMode(ENB,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT); 
}
void loop()
{
//entramos al bucle de ciclo
while(Ciclos>0){
      Thipp=Thip;//iniciamos los contadores
      Tnorr=Tnor;
      Serial.print(Ciclos);
      Serial.print("\n");
      Serial.print(Thip);
      Serial.print("\n");
      Serial.print(Tnor);
      Serial.print("\n");
        while(Thipp>0){//abre la valvula A
          analogWrite(ENA, 255);
          digitalWrite(IN1, 1);
          digitalWrite(IN2, 0);
          Thipp--;//disminuye el contador
          delay(1000);
          if(Thipp==0){//cierra la valvula A
            analogWrite(ENA,  0);
            digitalWrite(IN1, 1);
            digitalWrite(IN2, 0);
            Tnorr=Tnor;//iniciamos el contador para B
          }
          while(Tnorr>0){//abrimos B
              analogWrite(ENB, 255);
              digitalWrite(IN3, 1);
              digitalWrite(IN4, 0);
              Tnorr--;//disminuimos el contador
              delay(1000);
              if(Tnorr==0){//cerramos B
                analogWrite(ENB,  0);
                digitalWrite(IN3, 1);
                digitalWrite(IN4, 0);
                Thipp=Thip;//para empezar otro ciclo
                
              }
            }
           
        }
        delay(1000);
        
      
Ciclos--;//disminuimos el ciclo en 1
delay(1000);
    }
}

no he llegado a nada, ¿algun fallo en mi codigo ?

Saludos

En problema es que ENA y ENB controlan velocidad.
Con ENA,ENB = 255 le dices FULL velocidad y con ENA,ENB=0 le dices detente

IN1,IN2 controlan sentido giro. 1,0 para unlado y 0,1 para el otro.
Entonces?

Si quieres que una valvula abra, le dices gira en un sentido a Full si quieres y cuando detectes que llega la detienes con 0, pero luego debes invertir sentido para cerrarla,

Secuencia

void valvulaA(byte pwm, bool A, bool B) {
    analogWrite(ENA, pwm);
    digitalWrite(IN1, A);
    digitalWrite(IN2, B);
}

Esto para la 1er valvula

la abres

valvulaA(255, 1, 0);

la detienes

valvulaA(0,1,0);

la mueves para el otro sentido o sea la cierras

valvulaA(255, 0, 1);

la detienes

valvulaA(0,0,1);

gracias por la sugerencia!

ahora mismo intentare probarlo y ver como me anda en el bucle.

saludos!

Me corrijo, parar motor parado es

valvulaA(0,0,0);

la velocidad no tiene importancia pero IN1 e IN2 deben estar en 0.
Eso para la conducción de los transitores, sino te quedan conducionedo y consumiendo.

Tu tienes un puente con control de velocidad. Si solo quieres mover a un lado u otro, no hace falta ENA y ENB.
Lo pones en 1 y listo.