Code including both knob and button function for servos

[quote]
[color=#7E7E7E]/*  */[/color]
[color=#7E7E7E]// Constantes que no cambiarán[/color]
[color=#7E7E7E]//  configuran los números de los pines[/color]
const [color=#CC6600]int[/color] Detectordeinteriores = 44; 
const [color=#CC6600]int[/color] Detectordeexteriores = 45;
const [color=#CC6600]int[/color] Hacialaizquierda = 46;  
const [color=#CC6600]int[/color] Hacialaderecha = 47;
const [color=#CC6600]int[/color] Sentido=22;
const [color=#CC6600]int[/color] Marchaprimera=23;
const [color=#CC6600]int[/color] Marchasegunda=24;
const [color=#CC6600]int[/color] Marchatercera=25;
const [color=#CC6600]int[/color] Semaforo=26 ;
const [color=#CC6600]int[/color] Bocina=27;

[color=#7E7E7E]//variables que cambiarán se usa para indicar que el tren no está en la estación[/color]
[color=#7E7E7E]// utilizamos esta variable para diferenciar el centrado del tren de la llegada[/color]

[color=#CC6600]boolean[/color] Perdido=[color=#006699]LOW[/color];


[color=#CC6600]void[/color] [color=#CC6600][b]setup[/b][/color]() {
 
  [color=#7E7E7E]// configuramos los pines como salidas[/color]
 
  [color=#CC6600]pinMode[/color](Sentido, [color=#006699]OUTPUT[/color]);
  [color=#CC6600]pinMode[/color](Marchaprimera , [color=#006699]OUTPUT[/color]);
  [color=#CC6600]pinMode[/color](Marchasegunda, [color=#006699]OUTPUT[/color]);
  [color=#CC6600]pinMode[/color](Marchatercera, [color=#006699]OUTPUT[/color]);
  [color=#CC6600]pinMode[/color](Semaforo, [color=#006699]OUTPUT[/color]);
  [color=#CC6600]pinMode[/color](Bocina,[color=#006699]OUTPUT[/color]);

[color=#7E7E7E]//configuramos los pines como entradas[/color]
  
  [color=#CC6600]pinMode[/color](Detectordeinteriores, [color=#006699]INPUT[/color]);
  [color=#CC6600]pinMode[/color](Detectordeexteriores, [color=#006699]INPUT[/color]);
  [color=#CC6600]pinMode[/color](Hacialaizquierda, [color=#006699]INPUT[/color]);
  [color=#CC6600]pinMode[/color](Hacialaderecha, [color=#006699]INPUT[/color]);
  


  
}

[color=#CC6600]void[/color] [color=#CC6600][b]loop[/b][/color]()
{

  [color=#7E7E7E]//Si pulsamos el pulsador de la estación de la izquierda[/color]
  [color=#7E7E7E]//van entrando las marchas según el tiempo que pongamos en milisegundos[/color]
  
  [color=#CC6600]if[/color] ([color=#CC6600]digitalRead[/color](Hacialaderecha) == [color=#006699]HIGH[/color]) {  [color=#7E7E7E]//hacia la derecha   [/color]
    
    [color=#CC6600]digitalWrite[/color] (Sentido,[color=#006699]LOW[/color]); 
    Perdido= [color=#006699]HIGH[/color];
    [color=#CC6600]digitalWrite[/color](Marchaprimera, [color=#006699]HIGH[/color]);
    [color=#CC6600]digitalWrite[/color](Bocina,[color=#006699]HIGH[/color]);
    [color=#CC6600]digitalWrite[/color](Semaforo,[color=#006699]HIGH[/color]);
    [color=#CC6600]delay[/color](250);
    [color=#CC6600]digitalWrite[/color](Bocina,[color=#006699]LOW[/color]);
    [color=#CC6600]digitalWrite[/color](Marchasegunda,[color=#006699]HIGH[/color]);
    [color=#CC6600]delay[/color](250);
    [color=#CC6600]digitalWrite[/color](Marchatercera,[color=#006699]HIGH[/color]);
    [color=#CC6600]delay[/color](250);
    [color=#CC6600]digitalWrite[/color](Marchatercera,[color=#006699]LOW[/color]);
    


  } 
 [color=#7E7E7E]//Si en cualquiera de las dos estaciones llega el tren [/color]
 [color=#7E7E7E]//cuando se activa el detector de interiores se apaga la marcha segunda[/color]
 
  [color=#CC6600]if[/color] (([color=#CC6600]digitalRead[/color](Detectordeinteriores)==[color=#006699]HIGH[/color])&&([color=#CC6600]digitalRead[/color](Detectordeexteriores==[color=#006699]LOW[/color]))){[color=#7E7E7E]//llegada[/color]
      [color=#CC6600]if[/color] ((Perdido==[color=#006699]HIGH[/color])){
      [color=#CC6600]digitalWrite[/color](Marchasegunda, [color=#006699]LOW[/color]); 
      [color=#CC6600]digitalWrite[/color](Semaforo,[color=#006699]LOW[/color]);
      [color=#CC6600]digitalWrite[/color](Bocina, [color=#006699]HIGH[/color]);
     
     
     }
 }
[color=#7E7E7E]//cuando se activa el detector de exteriores se apaga la marcha primera y se deberá parar el tren[/color]

  [color=#CC6600]if[/color] (([color=#CC6600]digitalRead[/color](Detectordeexteriores)==[color=#006699]HIGH[/color])){[color=#7E7E7E]//llegada[/color]
      [color=#CC6600]if[/color](Perdido==[color=#006699]HIGH[/color]){
      [color=#CC6600]digitalWrite[/color](Marchaprimera,[color=#006699]LOW[/color]);
     Perdido=[color=#006699]LOW[/color];
      [color=#CC6600]digitalWrite[/color](Bocina, [color=#006699]LOW[/color]);
    }
  }
 [color=#7E7E7E]//centrado1: cuando el tren este en la estación se pueden dar 4 casos segun se encuentre activado [/color]
 [color=#7E7E7E]//los detectores y segun este el sentido. El programa deberá cambiar el sentido y activar la primera marcha[/color]
 [color=#7E7E7E]//para buscar estar en el punto que están activados los dos sensores[/color]
  [color=#CC6600]if[/color] (Perdido==[color=#006699]LOW[/color]){
    [color=#CC6600]if[/color](([color=#CC6600]digitalRead[/color](Detectordeinteriores)==[color=#006699]LOW[/color]) && ([color=#CC6600]digitalRead[/color](Detectordeexteriores)==[color=#006699]HIGH[/color])){
      
       
        [color=#CC6600]if[/color] ([color=#CC6600]digitalRead[/color](Sentido)==[color=#006699]LOW[/color]){
          
             [color=#CC6600]do[/color]{
             [color=#CC6600]digitalWrite[/color](Sentido,[color=#006699]HIGH[/color]);
             [color=#CC6600]delay[/color](20);
             [color=#CC6600]digitalWrite[/color](Marchaprimera,[color=#006699]HIGH[/color]);
             [color=#CC6600]delay[/color](100);
              }
             [color=#CC6600]while[/color]( (([color=#CC6600]digitalRead[/color](Detectordeinteriores)==[color=#006699]LOW[/color]) && ([color=#CC6600]digitalRead[/color](Detectordeexteriores)== [color=#006699]HIGH[/color])));
             
             
          }
        
    }
  }
  
 [color=#CC6600]if[/color] (Perdido==[color=#006699]LOW[/color]){[color=#7E7E7E]//centrado2[/color]
    [color=#CC6600]if[/color](([color=#CC6600]digitalRead[/color](Detectordeinteriores)==[color=#006699]HIGH[/color]) && ([color=#CC6600]digitalRead[/color](Detectordeexteriores)==[color=#006699]LOW[/color])){
      
   
         [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](Sentido==[color=#006699]HIGH[/color]))
          {
          
          [color=#CC6600]do[/color]{
          [color=#CC6600]digitalWrite[/color](Sentido,[color=#006699]LOW[/color]);
          [color=#CC6600]delay[/color](20);
          [color=#CC6600]digitalWrite[/color](Marchaprimera,[color=#006699]HIGH[/color]);
          [color=#CC6600]delay[/color](100);
          }
          [color=#CC6600]while[/color]( (([color=#CC6600]digitalRead[/color](Detectordeinteriores)==[color=#006699]HIGH[/color]) && ([color=#CC6600]digitalRead[/color](Detectordeexteriores)== [color=#006699]LOW[/color])));
          
                  
        
          }
          
         
        
      }
    
  }
  
  [color=#7E7E7E]//parado cuando estan activados los dos sensores es donde el tren debe parar[/color]
    [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](Detectordeinteriores)==[color=#006699]HIGH[/color]){
      [color=#CC6600]if[/color]([color=#CC6600]digitalRead[/color](Detectordeexteriores)==[color=#006699]HIGH[/color]){
        [color=#CC6600]digitalWrite[/color](Marchaprimera,[color=#006699]LOW[/color]);
         
     
        
       
        
      }
    }
  
  

  [color=#7E7E7E]// check if the pushbutton is pressed.[/color]
  [color=#7E7E7E]// if it is, the buttonState is HIGH:[/color]
  [color=#CC6600]if[/color] ([color=#CC6600]digitalRead[/color](Hacialaizquierda)==[color=#006699]HIGH[/color]) {     
    [color=#7E7E7E]// turn LED on: [/color]
    [color=#CC6600]digitalWrite[/color] (Sentido,[color=#006699]HIGH[/color]); 
     
    [color=#CC6600]digitalWrite[/color](Marchaprimera, [color=#006699]HIGH[/color]);  
    [color=#CC6600]digitalWrite[/color](Bocina,[color=#006699]HIGH[/color]);
    [color=#CC6600]digitalWrite[/color](Semaforo,[color=#006699]HIGH[/color]);   
    Perdido= [color=#006699]HIGH[/color];
    [color=#CC6600]delay[/color](250);
    [color=#CC6600]digitalWrite[/color](Bocina,[color=#006699]LOW[/color]);
    [color=#CC6600]digitalWrite[/color](Marchasegunda,[color=#006699]HIGH[/color]);
    [color=#CC6600]delay[/color](250);
    [color=#CC6600]digitalWrite[/color](Marchatercera,[color=#006699]HIGH[/color]);
    [color=#CC6600]delay[/color](250);
    [color=#CC6600]digitalWrite[/color](Marchatercera,[color=#006699]LOW[/color]);
  } 

 
  [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color](Perdido,[color=#006699]DEC[/color]);
  
}[color=#7E7E7E]//main[/color]



[/quote]