Ayuda con mi primer proyecto IR-Arduino-HTPC

Buenas a todos.
Antes de nada saludaros a todos y presentarme en este foro. Estoy dando mis primeros pasos con arduino uno, antes he realizado alguna cosilla con pics en basic, así que de c no tengo ni idea, pero lo que llevo trasteado me está gustando mucho.

Al grano...

Este es mi primer proyecto, es muy simple (imagino por los nivelazos que he visto aquí). Tengo montado un HTPC con lo que me queda de un mini-portaltil (sorprendentemente para esta tarea se comporta genial). El arduino se va a encargar de controlar el encendido del pc, los ventiladores y un aplificador.
El encendido lo va a gestionar con un pulsador y a la vez con el mando a distancia con el que manejo el htpc, accionado cualquiera de los dos encendería.
De momento lo que tengo realizado es el encendido/apagado, una secuencia con unos leds, un led que indica señal IR o pulsación del botón.
El problema que por más vueltas que le doy no entiendo es que al resetear el arduino y pulsar el botón no hace nada. Sin embargo, si reseteo y le doy al power del mando infrarrojo si enciende/apaga y a partir de ahí, lo hace también con el botón.
Lo curioso es que el led que tengo de "chivato", cuando el botón no "enciende el pc" el led si indica que se ha pulsado, pero no hace nada más.
Os dejo el código:

#include <IRremote.h>
#define RECV_PIN 10 

int timer1 = 75;
int timer2 = 25;

int led =6;
int piloto =7;
int pul =12;

int on =0;
int i =0;
int led1 =5;
int led2 =4;
int led3 =3;
int led4 =2;
//Inicia libreria IR
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(pul, INPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  irrecv.enableIRIn(); // Inicia recepcion
}
void loop()
{
  //Si detecta pulsación o señal IR
  if (digitalRead(pul) == HIGH || irrecv.decode(&results))
  {
    //Indica recepción del IR o accionado del pulsador
    digitalWrite(piloto,HIGH);
    delay(150);
    digitalWrite(piloto,LOW);
    //Comprueba si es la TECLA Power
    if(results.value==0x24B92)
    {
      //Comprueba si esta encendido el led, si lo esta lo apaga
      if(on ==1)
      {
        digitalWrite(6,LOW);
        on =0;
        i =0;
        delay(250);
      }
      //si no, lo enciende
      else
      {
        //Secuencia/animación de leds
        for (int i=0; i<=1; i++)
        {
          //Barrido
          digitalWrite(led1, HIGH);
          delay(timer1);
          digitalWrite(led2, HIGH);
          delay(timer2);
          digitalWrite(led1, LOW);
          delay(timer1);
          digitalWrite(led3, HIGH);
          delay(timer2);
          digitalWrite(led2, LOW);
          delay(timer1);
          digitalWrite(led4, HIGH);
          delay(timer2);
          digitalWrite(led3, LOW);
          delay(timer2);
          digitalWrite(led4, LOW);
          delay(timer1);

        }
        //Parpadeo
        digitalWrite(led1, HIGH); 
        digitalWrite(led2, HIGH); 
        digitalWrite(led3, HIGH); 
        digitalWrite(led4, HIGH);
        delay(250);
        digitalWrite(led1, LOW); 
        digitalWrite(led2, LOW); 
        digitalWrite(led3, LOW); 
        digitalWrite(led4, LOW);
        delay(250);
        digitalWrite(6,HIGH);
        on =1;
        i =1;
        delay(250);
      }
    }
    {
      delay(50);
      irrecv.resume();
    }
  }
}

Como he dicho es simple y posiblemente el código se podrá mejorar mucho... tened piedad, que es lo primero que hago :cold_sweat: :cold_sweat:
Puedo vivir con ese fallo, pero es que me está matando no saber porque ocurre. Espero que podáis echarme una mano.

Gracias por vuestro tiempo.

Un saludo.

HTPC ???
q control remoto estas usando ?
antes de avanzar me cercioraria del que el boton que pulse es realmente.

Hola Omnicoptero.

Creo que con el tocho que he escrito antes lo he liado más de la cuenta.

HTPC es "Home Theater Personal Computer" lo que básicamente viene a ser un pc conectado a una tele y utilizado principalmente para contenido multimedia. HTPC - Wikipedia, la enciclopedia libre

El control remoto es uno estándar para pc, con el controlo el programa multimedia y apago el ordenador, usa el protocolo NEC y ya tengo todos los botones mapeados con su correspondiente código en hexadecimal.

Cuando hablaba de un pulsador que no funcionaba me refería a que el arduino tiene un pulsador físico que realiza la misma función del power en el control remoto, es decir, que al pulsarlo encendería el pc al igual que si lo hago desde el control remoto. Dos maneras distintas de encender el ordenador.
El problema es que cuando conecto la alimentación al arduino y pulso el botón físico no hace nada, pero el led testigo si indica la pulsación, y sin embargo si le doy al power en el control remoto si enciende el pc.
Si lo apago y lo vuelvo a encender esta vez desde el botón físico, esta vez si funciona, puedo apagar y encender el pc tanto desde el botón físico como desde el control remoto.
Si desconecto la alimentación y la vuelvo a conectar o reseteo el arduino... vuelta a empezar, la primera vez solo funciona desde el control remoto y a partir de ahí desde cualquiera de los dos.

Un saludo.

Puede ser que hayas puesto los pulsadores en serie??

Pon un esquema de como lo has conectado, porque me parece que el problema es ese.

Hola masteron.

Pues va a ser que no, es que solo hay un pulsador. Yo creo que el problema viene de software porque después de la primera activación desde el mando a distancia el pulsador funciona bien... no es que sea un error muy grabe, pero me está desquiciando no saber el motivo.

Este es el prototipo con el que trabajo:

El led verde hace las veces de ordenador, el sensor IR es esa cosa negra abajo a la derecha, el led amarillo es el chivato de señal IR o pulsador

Un saludo.

El cable negro pequeño esta igual en tu circuito? Esta cortocircuitando