Problema con motor DC y Servo

Hola, cómo están. Tengo un problema con el motor DC de 5V y el microServo 9g.
El problema es que al insertar el código para que el microservo funcione, el motor DC solo funciona una sola vez, y si el microservo no está funcionando, el motorDC funciona perfectamente. Espero que me ayuden, soy nuevo en la electrónica. Muchas gracias. Este es mi código.

#inclue <Servo.h>
Servo servo1;

int IN1 = 13;
int IN2 = 12;
int ENA = 10;
int IN3 = 5;
int IN4 = 4;
int ENB = 3;
int contador = 0;

long ultrasonido(int disparo, int eco){
long duracion, cm;
pinMode(disparo,OUTPUT);
digitalWrite(disparo,LOW);
delayMicroseconds(2);
digitalWrite(disparo,HIGH);
delayMicroseconds(5);
digitalWrite(disparo,LOW);
pinMode(eco,INPUT);
duracion = pulseIn(eco,HIGH);
cm = microsecondsToCentimeters(duracion);
Serial.print(cm);
Serial.println(" cm");
delay(600);
return cm;
}

long microsecondsToCentimeters(long microseconds){
return microseconds/29/2;
}

void setup(){
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
Serial.begin(9600);
servo1.attach(9);

}

void loop(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,105);
long distancia = ultrasonido(7,6);
if(distancia==20){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
delay(1000);
for (int pbase = 0; pbase < 50; pbase++){
servo1.write(pbase);
delay(15);
}
contador++;
delay(3000);
}
if(contador>1){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
delay(1000);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,105);
delay(4000);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
contador=0;
delay(2000);
}
}