arduino met relay control en Timer restart how to do?

Dit lijkt me toch niet zo moeilijk.
Onderstaand niet geteste code als een voorzet.
Het is een combinatie van de code die je hier kan vinden http://arduino.cc/en/Reference/AttachInterrupt
en een timer conditie
met vriendelijke groet
Jantje

int pin = 3;
volatile int state = HIGH;
int prefState = state;
unsigned long TimerStart=0;

void blink()
{
  state = !state;
}

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);
}

void loop()
{
	if(prefState != state ) // de knop is vernderd
	{
		prefState = !prefState; //Zet prefState gelijk aan state
		if (TimerStart==0) //is dit de eerste keer dat de schakelaar van stand veranderd?
		{
			TimerStart=millis(); //Zo ja start de timer
		}
  digitalWrite(pin, prefState); //zet de pin goed
	}
	if ( (TimerStart!=0) && ((TimerStart+40*60*100) < millis()) ) // de timer is meer dan 40 minuten geleden gestart
	{
		while(true);//wacht voor eeuwig en altijd
	}
}