int memoria=0;
void setup(){
  DDRB=B00111111;//asigno pines 8-13 salidas
  DDRD=B11100000;//asigno pines 0-4 como entradas, 5-7 salidas
}
void loop (){
  if(digitalRead(4)==LOW && memoria==0 && digitalRead(8)==LOW){
    delay(3000);
    digitalWrite(8,HIGH);
  }
  if(digitalRead(4==HIGH)){//cerrar la puerta
    digitalWrite(8,LOW);
    memoria=0;
  }
  if(digitalRead(2)==LOW){//dar al pulsador
    memoria=1;
    digitalWrite(8,LOW);
    delay(300);
  }
}