Movimiento inesperado

Buenas Tardes

Agradezco por anticipado su ayuda.

Mi proyecto se basa en una entrada con un sensor PIR, que activará un motor por 20 seg en un sentido y después quedará esperando a que sea activado de nuevo el sensor para que el motor giro en sentido contrario por 20 seg.

El proyecto ya lo tengo montado con el Puente H y demás equipos y funciona bien. El problema es que sin razón aparente en ocasiones se repite el giro hacia uno de los sentidos, en una o más veces lo que daña mi proyecto ya que quiero que el movimiento sea específico.

Observando al pasar más minutos de espera suele a repetirse el movimiento en un sentido, en ocasiones trabaja adecuadamente durante largo tiempo sin problema.

Agradezco su ayuda para asegurar que siempre se cumpla una función por bloque y no se repita el giro en un sentido.

byte sensorpir = 3;
byte Mot = 11;
byte Moto = 10;
byte Bomb = 8;
byte Bomba = 7;
byte ENA = 6;

void setup ()
{
pinMode (sensorpir, INPUT);
pinMode (Mot, OUTPUT);
pinMode (Moto, OUTPUT);
pinMode (Bomb, OUTPUT);
pinMode (Bomba, OUTPUT);
analogWrite (ENA, 160);
Serial.begin(9600);
}

void loop()

{
if (digitalRead(sensorpir) == HIGH)

Serial.println (" Detectado movimiento por el sensor pir");
digitalWrite(Mot, LOW);
digitalWrite(Moto,HIGH);
digitalWrite(Bomb, LOW);
digitalWrite(Bomba,HIGH);
delay(20000);
digitalWrite(Mot, LOW);
digitalWrite(Moto,LOW);
digitalWrite(Bomb, LOW);
digitalWrite(Bomba,LOW);
delay(5000);

{
if (digitalRead(sensorpir) == HIGH)

Serial.println (" Detectado movimiento por el sensor pir");
digitalWrite(Mot, HIGH);
digitalWrite(Moto,LOW);
digitalWrite(Bomb, LOW);
digitalWrite(Bomba,HIGH);
delay(20000);
digitalWrite(Mot, LOW);
digitalWrite(Moto,LOW);
digitalWrite(Bomb, LOW);
digitalWrite(Bomba,LOW);
delay(1000);

}
}

**Moderador:**Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Como tu consulta es para otra sección lo muevo a Software.
Los códigos se postean usando etiquetas. Edita