Comportamiento Raro, Programa? o Hardware?

buenas les comento mi problemilla...

tengo armado al Arduino deminueve un controlado de un jostick de una Xbox360, que necesito que ejecute unos comando, haga una temporizacion y vuelva a ejecutar unos comandos...

Si divido el programas en partes seria basicamente
Inicia, temporiza, termina,

/*
  Contol de xbox360
  Por xeleneo.com.ar
*/
// set pin numbers:
const int Coin = 2;     
const int Time1 = 10;
const int Time2 = 11;
const int ledPin =  13;      
const int BotonA =  6;      
const int Xbox =  5;     
const int BotonUp =  3;     
const int Trafo =  4;     


// variables will change:
int CoinState = 0;         // variable for reading the pushbutton status
int Contador = 0;          //
boolean run = false;
int Time1State = 0;
int Time2State = 0;

void setup() {
  Serial.begin(9600);   
  pinMode(ledPin, OUTPUT);     
  pinMode(BotonA, OUTPUT);
  pinMode(Xbox, OUTPUT);
  pinMode(BotonUp, OUTPUT);  
  pinMode(Trafo, OUTPUT);
  pinMode(Coin, INPUT);     
  pinMode(Time1, INPUT);
  pinMode(Time2, INPUT);     
}


void loop(){
  CoinState = digitalRead(Coin); // Leer estado del Coin
  Time1State = digitalRead(Time1); 
  Time2State = digitalRead(Time2);
  
  if (CoinState == HIGH) {     
      if (Time1State == HIGH){
        Contador = Contador + 300;    
        Serial.print("Time1 \n");
      } else{
        if (Time2State == HIGH){
          Contador = Contador + 400;
          Serial.print("Time2 \n");
        } else{
          Contador = Contador + 500;
          Serial.print("Time3 \n");  
        }// end Time3
    }

    //Arriba();
    
    digitalWrite(ledPin, HIGH);    
    digitalWrite(BotonA, HIGH);
    delay(50); 
    digitalWrite(BotonA, LOW);
    digitalWrite(Trafo, HIGH);
    Serial.print("Coin \n");
    run = true;
  } 

  if (run == true) {  
  

    if (Contador > 1 ){
       Contador = Contador -- ;
      Serial.print("\n Contador: ");
      Serial.print(Contador);
      delay (100);
    
    }  else {
      Serial.print("\nSecuancia apagado \n");
      run = false;
      
      SecuenciaApagado();
            
      delay(100);
      Serial.print("\nApaga Trafo \n"); 
      digitalWrite(Trafo, LOW);
      digitalWrite(ledPin, LOW);              
          
            
    } // Fin contador 
  
  } //Fin del run
  
}//Fin del LOOP

int  SecuenciaApagado(){
  
  
      digitalWrite(ledPin, LOW);
      digitalWrite(Xbox, HIGH);
      delay(50);
      digitalWrite(Xbox, LOW);      
      delay(1000);
      digitalWrite(BotonA, HIGH);
      delay(50); 
      digitalWrite(BotonA, LOW);
      delay(1000);
      
      Arriba();
      
      delay(1000);
      digitalWrite(BotonA, HIGH);
      delay(500);
      digitalWrite(BotonA, LOW);
      
}

int Arriba(){
      digitalWrite(BotonUp, HIGH);
      delay(50); 
      digitalWrite(BotonUp, LOW);


}

Pasa que cuando corre el prog en el arduino, la funcion de Ariba() no da respuesta, originalmente estaba en la misma funcion de SecuenciaApagado() y tampoco respondia en ese punto,

Los circuitos por separado funcionan bien, de hecho si saco la funcion y la pongo al principio del prog funciona correctamente, pero no donde la necesito.

Alguna idea? :o

Le acabo de hacer una lectura rápida y no sé si tendrá mucho que ver pero SecuenciaApagado y Arriba no devuelven nada, cuando los has declarado como int.

si, en realidad la funcion... funciona...

el paso q no funciona correctamente es

      digitalWrite(BotonUp, HIGH);
      delay(50);
      digitalWrite(BotonUp, LOW);

el comando anterior funciona, "Xbox"

si lo pongo al inicio, a este bloque.. tembien funciona...

es muy raro...

Mírate como se usan las funciones if y else, ya que las dos que tienes puestas están mal (o eso creo interpretar)
http://www.arduino.cc/en/Reference/Else

Un saludo