Ayuda interrupciones

Hola gente,como están?
estoy tratando de hacer un circuito que haga lo siguiente.
Lo estoy probando con leds,y la cuestion es que el led 1 tiene que depender pura y exclusivamente del estado del pulsador y debe ser ciclíco,por eso lo coloqué en el loop,entonces si el pulsador no está oprimido,el led se enciende,y una vez que se oprimió,el led se apagó,en cambio,el led2 debe primero esperar cierto tiempo (No le coloqué el delay,pero tiene que ser de 12 horas),leer si el pulsador2 no está oprimido y ahí debe prenderse el led,una vez que se oprimió el pulsador2,se apagó.
Se entiende?
este es el codigo que hice,pero no funciona como pretendo...

int led = 4;
int led1 = 3;
int pulsador1 = 12;
int pulsador= 10;
volatile int state = LOW;
void setup()
{
** pinMode(led, OUTPUT);**
** pinMode(led1, OUTPUT);**
** pinMode(pulsador1, INPUT);**
** pinMode(pulsador, INPUT);**
** attachInterrupt(led1, stateChange, CHANGE);**
}
void loop()
{
** if (digitalRead(pulsador)==LOW)**
** {**
** digitalWrite(led,HIGH);**
** }**
** else**
** {**
** digitalWrite(led,LOW);**
** }**
}
void stateChange()
{
** if (digitalRead(pulsador1)==LOW)**
** {**

state = !state;
digitalWrite(led1, state);
}
else
** {**
** digitalWrite(led1,LOW);**
** }**
}

Espero que puedan ayudarme

Buenas,

Una vez pulsado, si lo sueltas que debe suceder?
y si lo pulsas de nuevo?

una vez pulsado,el led se apaga,y una vez que se suelta de nuevo,se vuelve a prender,pero como digo...uno es ciclico,y el otro led (LED1) necesito esperar 12 horas si o si

Gente!!
Logré hacer que el led 1 y 2 prendan y actuen por separado,pero no puedo lograr generar el retardo para que comience a funcionar el led 2,en todo momento se queda prendido, y yo deseo que el led2 se prenda cada 12 horas unicamente,sin que afecte al led 1
alguno sabe como?

Les dejo el codigo que hice

int led1 = 4;
int led2 = 5;
int puls1 = 2;
int puls2 = 3;

void setup()
{
Serial.begin(9600);
attachInterrupt(1,parpadeo,LOW);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(puls1, INPUT);
pinMode(puls2, INPUT);
}

void loop()
{ if (digitalRead(puls1)==HIGH)// Condicional para determinar si la llave esta en estado alto
{
digitalWrite(led1,LOW);//se cumplio el condicional,led1 OFF
}
else
{
digitalWrite(led1,HIGH);//No se cumplio condicional..led1 ON
}

}

void parpadeo(){

// Condicional para determinar si la llave esta en estado alto

{ if (digitalRead(puls2)==HIGH)
{ digitalWrite(led2,LOW);//se cumplio el condicional,led2 OFF
}

else
{
digitalWrite(led2,HIGH);//No se cumplio condicional..led2 ON
}

} }

Prueba algo asi:

int led1 = 4;
int led2 = 5;
int puls1 = 2;
int puls2 = 3;
bool EstadoP1=false;
bool EstadoP2=false;
unsigned long TiempoEsperado=0;
unsigned long Demora=10000;     // 12 horas * 60 minutos * 60 segundos * 1000 milesimas = 43200000 
                                // ponemos cantidad menor para probar el programa
void setup()
{
   //Serial.begin(9600);
   //attachInterrupt(1,parpadeo,LOW);
   pinMode(led1,OUTPUT);
   pinMode(led2,OUTPUT); 
   pinMode(puls1, INPUT);
   pinMode(puls2, INPUT);
}

void loop()
{ 
  EstadoP1=!digitalRead(puls1); 
  digitalWrite(led1,EstadoP1);  
  if (!EstadoP1 &&  TiempoEsperado==0) {TiempoEsperado=millis() + Demora;}  // Arrancamos tiempo de espera
  if (TiempoEsperado>0 && millis() >TiempoEsperado)                         // Acabo tiempo de espera
  {
    EstadoP2=!digitalRead(puls2); 
    digitalWrite(led2,EstadoP2);
  } 
}

Si no es lo que quieres, explica mejor lo que quieres.

Muchas gracias marcial!
pero el que necesita tiempo de espera para su activacion es solamente el led 2,el led 1 debe estar en el loop,en cambio,el led 2 no debe ser ciclico y estar en el void loop,sino que debe estar en otro void,me explico?
el led 1 funciona en todo momento,es decir,es "Sensado" en todo momento.
En cambio el led 2 solo es sensado cada 12 horas

Ey compa!
tu codigo funciona perfecto,pero solo tengo un problema!!!
funciona a lo esperado,pero al pulsar el puls2 el led se apaga,y al soltarlo instantaneamente se enciende,yo pretendo que al soltarlo,esperé nuevamente el tiempo y recien ahi se prenda el led,se comprende?
es decir..

12 horas --> pulsador no oprimido --> led enciende --> pulsador oprimido --> led apaga y si el pulsador se vuelve a modo no oprimido que espere 12 horas,no que encienda el led instantaneamente

Prueba esto:

int led1 = 4;
int led2 = 5;
int puls1 = 2;
int puls2 = 3;
bool EstadoP1=false;
bool EstadoP2=false;
unsigned long TiempoEsperado=0;
unsigned long Demora=10000;     // 12 horas * 60 minutos * 60 segundos * 1000 milesimas = 43200000 
                                // ponemos cantidad menor para probar el programa
void setup()
{
   pinMode(led1,OUTPUT);
   pinMode(led2,OUTPUT); 
   pinMode(puls1, INPUT);
   pinMode(puls2, INPUT);
}

void loop()
{ 
  EstadoP1=!digitalRead(puls1); 
  digitalWrite(led1,EstadoP1);  
  if (!EstadoP1 &&  TiempoEsperado==0)                    // Arrancamos tiempo de espera para encender led 2
    {TiempoEsperado=millis() + Demora;} 
    
  if (TiempoEsperado>0 && millis() >TiempoEsperado)      // Acabo tiempo de espera
  {
    EstadoP2=digitalRead(puls2); 
    if (EstadoP2)                                        // Pulsador actuado, cancelar led 2
    {  
      digitalWrite(led2,LOW);
      TiempoEsperado=0;
    }
    else {digitalWrite(led2,HIGH);}
  } 
}

sos un craaaack!!!!!!!!!!!!!!!!!!!!!
Gracias por toda tu ayuda compa!!! la verdad que me alegraste el dia,no tengo más que palabras de agradecimientos para contigo! muchisimas gracias compa!
Gracias por toda tu paciencia,por tus ganas de aportar,por todo!
me has salvado!

:blush: