Control de giro de motor dc

Buenas noches

Tengo un trabajo en el que debo cambiar el sentido de giro de un motor de 12VDC.
Para la primera parte tengo que usar un puente H basado en 2 reles, anexo a esto lleva un potenciometro que controla las rpm del motor y 3 display's que marcan la resolución pwm. Consta de un pulsador on/off para arrancar el motor y un interruptor o selector para cambiar el sentido de giro sólo cuando el motor esté detenido.

Para la segunda parte,es la misma situación anterior sólo que se cambia el puente H de relés por un L293D.

Los pines analógicos van de 0-2 para el pot, on/off y selector
los pines de dispaly van de A3,A4,A5 y desde los pines de 1-9
y el puente 10 y 11.

Al realizar la conexión, los display's no quedan ceros al igual que el motor no enciende, asi tengo los codigos: el 1 para el puente de reles y el 2 para el datasheet

De antemano muchas gracias por la colaboración

Puente_Rele.ino (5.68 KB)

Datasheet.ino (5.52 KB)

Podrias poner un esquema para entender todo de un vistazo.

Tu primero código no tiene comentarios, se hace dificil sin esquema y sin comentarios seguirlo.

Ademas no se porque no lo posteaste en lugar de adjuntarlo

int poten;
int interr;
int motor;int dmotor=11; int imotor=10;
int cont;int cont2;int cont3;
int vel;int omeg;
int inifin=A1;int inicio=0;
int selector=A2;
void setup() {
  Serial.begin(9600);
 for(int pin=1;pin<=11;pin++){
 pinMode(pin,OUTPUT);
}
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
digitalWrite(imotor,HIGH);
digitalWrite(dmotor,LOW);
}

void loop() {
    if(digitalRead(inifin)==HIGH){
    delay(50);
  inicio=1-inicio;
  if(interr==digitalRead(HIGH)){selector=1;}
  else{selector=0;}
}
  if(inicio==1){
    poten=analogRead(A0);
    vel=map(poten,0,1023,0,255);
    if(selector==1){
      analogWrite(motor,vel);
      digitalWrite(dmotor,HIGH);
      digitalWrite(imotor,LOW);
    }
    if(selector==0){
      analogWrite(motor,vel);
      digitalWrite(imotor,HIGH);
      digitalWrite(dmotor,LOW);
    }
    omeg=map(poten,0,1023,0,200); //0 a 200 rpm
    if(omeg>=0 && omeg<10){cont=omeg;cont2=0;cont3=0;}
    if(omeg>=10 && omeg<20){cont=omeg-10;cont2=1;cont3=0;}
    if(omeg>=20 && omeg<30){cont=omeg-20;cont2=2;cont3=0;}
    if(omeg>=30 && omeg<40){cont=omeg-30;cont2=3;cont3=0;}
    if(omeg>=40 && omeg<50){cont=omeg-40;cont2=4;cont3=0;}
    if(omeg>=50 && omeg<60){cont=omeg-50;cont2=5;cont3=0;}
    if(omeg>=60 && omeg<70){cont=omeg-60;cont2=6;cont3=0;}
    if(omeg>=70 && omeg<80){cont=omeg-70;cont2=7;cont3=0;}
    if(omeg>=80 && omeg<90){cont=omeg-80;cont2=8;cont3=0;}
    if(omeg>=90 && omeg<100){cont=omeg-90;cont2=9;cont3=0;}
    if(omeg>=100 && omeg<110){cont=omeg-100;cont2=0;cont3=1;}
    if(omeg>=110 && omeg<120){cont=omeg-110;cont2=1;cont3=1;}
    if(omeg>=120 && omeg<130){cont=omeg-120;cont2=2;cont3=1;}
    if(omeg>=130 && omeg<140){cont=omeg-130;cont2=3;cont3=1;}
    if(omeg>=140 && omeg<150){cont=omeg-140;cont2=4;cont3=1;}
    if(omeg>=150 && omeg<160){cont=omeg-150;cont2=5;cont3=1;}
    if(omeg>=160 && omeg<170){cont=omeg-160;cont2=6;cont3=1;}
    if(omeg>=170 && omeg<180){cont=omeg-170;cont2=7;cont3=1;}
    if(omeg>=180 && omeg<190){cont=omeg-180;cont2=8;cont3=1;}
    if(omeg>=190 && omeg<200){cont=omeg-190;cont2=9;cont3=1;}
    if(omeg>=200 && omeg<210){cont=omeg-200;cont2=0;cont3=2;}
    num(); num2(); num3();
  }
  else{
    analogWrite(motor,0);
    digitalWrite(dmotor,LOW);
    digitalWrite(imotor,LOW);
    cont=0;cont2=0;cont3=1;
    num(); num2(); num3();
  }
}
void num(){
  switch(cont){
    case 0:
    digitalWrite(A5,LOW);digitalWrite(A4,LOW);digitalWrite(A3,LOW);digitalWrite(1,LOW);
    break;
    case 1:
    digitalWrite(A5,HIGH);digitalWrite(A4,LOW);digitalWrite(A3,LOW);digitalWrite(1,LOW);
    break;
    case 2:
    digitalWrite(A5,LOW);digitalWrite(A4,HIGH);digitalWrite(A3,LOW);digitalWrite(1,LOW);
    break;
    case 3:
    digitalWrite(A5,HIGH);digitalWrite(A4,HIGH);digitalWrite(A3,LOW);digitalWrite(1,LOW);
    break;
    case 4:
    digitalWrite(A5,LOW);digitalWrite(A4,LOW);digitalWrite(A3,HIGH);digitalWrite(1,LOW);
    break;
    case 5:
    digitalWrite(A5,HIGH);digitalWrite(A4,LOW);digitalWrite(A3,HIGH);digitalWrite(1,LOW);
    break;
    case 6:
    digitalWrite(A5,LOW);digitalWrite(A4,HIGH);digitalWrite(A3,HIGH);digitalWrite(1,LOW);
    break;
    case 7:
    digitalWrite(A5,HIGH);digitalWrite(A4,HIGH);digitalWrite(A3,HIGH);digitalWrite(1,LOW);
    break;
    case 8:
    digitalWrite(A5,LOW);digitalWrite(A4,LOW);digitalWrite(A3,LOW);digitalWrite(1,HIGH);
    break;
    case 9:
    digitalWrite(A5,HIGH);digitalWrite(A4,LOW);digitalWrite(A3,LOW);digitalWrite(1,HIGH);
    break;
  }
}
void num2(){
   switch(cont2){
    case 0:
    digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);digitalWrite(5,LOW);
    break;
    case 1:
    digitalWrite(2,HIGH);digitalWrite(3,LOW);digitalWrite(4,LOW);digitalWrite(5,LOW);
    break;
    case 2:
    digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(4,LOW);digitalWrite(5,LOW);
    break;
    case 3:
    digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,LOW);digitalWrite(5,LOW);
    break;
    case 4:
    digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,HIGH);digitalWrite(5,LOW);
    break;
    case 5:
    digitalWrite(2,HIGH);digitalWrite(3,LOW);digitalWrite(4,HIGH);digitalWrite(5,LOW);
    break;
    case 6:
    digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,LOW);
    break;
    case 7:
    digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,HIGH);digitalWrite(5,LOW);
    break;
    case 8:
    digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);digitalWrite(5,HIGH);
    break;
    case 9:
    digitalWrite(2,HIGH);digitalWrite(3,LOW);digitalWrite(4,LOW);digitalWrite(5,HIGH);
    break;
  }
}
  void num3(){
   switch(cont3){
    case 0:
    digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,LOW);
    break;
    case 1:
    digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,LOW);
    break;
    case 2:
    digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,LOW);digitalWrite(9,LOW);
    break;
    case 3:
    digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,LOW);digitalWrite(9,LOW);
    break;
    case 4:
    digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,HIGH);digitalWrite(9,LOW);
    break;
    case 5:
    digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,HIGH);digitalWrite(9,LOW);
    break;
    case 6:
    digitalWrite(6,LOW);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,LOW);
    break;
    case 7:
    digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,LOW);
    break;
    case 8:
    digitalWrite(6,LOW);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,HIGH);
    break;
    case 9:
    digitalWrite(6,HIGH);digitalWrite(7,LOW);digitalWrite(8,LOW);digitalWrite(9,HIGH);
    break;
  }
 }

Es que excedía el numero máximo de caracteres permitidos por eso los adjunté, y como también como dice adjunto los circuitos. Y gracias por responder