Automatic Garage Door Closer

I used your code to make a closer of my own, I put an ethernet board on so that there would be a web server. I created a selector button and LEDs to cycle from 5 to 15(or in my case I changed it to 20), 60 minute and off delays, rather than a dip switch. I hope you don't mind me posting it to this thread.

/* Arduino Garage Door Closer # 4
with ethernet shield and webserver

DIGITAL PINS USED
3 Status LEDs for Door Timer
1 Led for Door Open
1 Led for Door Closed
1 Pushbutton Switch for Door Status
1 Pushbutton Switch for timer selection
1 Relay Board 
Total = 8

*/


#include <SPI.h>
#include <Ethernet.h>

 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 177 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
 
String readString;

int doordelay; // Delay in minutes to close door if open
int doordelayminutes = 1;
const long oneSecond = 1000;
const long oneMinute = oneSecond * 60;
long doorinterval;

int on_off = 2;  // on/off switch pin
int status_pin = 7;  // open (HIGH) or closed (LOW) pin
int operate_pin = 6;  // relay pin to open/close door

int fivemin_led = 9; // (5) Five  Minute Timer LED pin
int fifteenmin_led = 8; // (15) Fifteen Minute Timer LED pin
int sixtymin_led = 5; // (60) Sixty Minute Timer LED pin

int open_door = 4; // Open Door LED pin
int closed_door = 3; // Closed Door LED pin

int door_count = 0; // Keep track of how many times the door has been left open.
int door = LOW;     // Door Status
int powertog = LOW; // Disable switch status
int buttonPushCounterm = 0;
int buttonStatem = 0;
int lastButtonStatem = 0;


int timer ;
int minutes_1 = 60000; // 1000*60
int minutes_20 = 1200000; // 1000*60*20
int minutes_240 = 14400000; // 1000*60*240
String buffer = "";  

unsigned long current_time;



void setup() 
{
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  Serial.begin(9600);
  pinMode(status_pin, INPUT);
  pinMode(operate_pin, OUTPUT);
  digitalWrite(operate_pin, HIGH);
 }

void closedoor()
{ 
  digitalWrite(operate_pin, LOW);  // Closing the door
  analogWrite(fivemin_led, 255);  
  analogWrite(fifteenmin_led, 255);
  analogWrite(sixtymin_led, 255);
  delay(100);
  digitalWrite(operate_pin, HIGH); // Stop closing door
  analogWrite(fivemin_led, 0);  
  analogWrite(fifteenmin_led, 0);
  analogWrite(sixtymin_led, 0);
  delay(100);
  analogWrite(fivemin_led, 255);  
  analogWrite(fifteenmin_led, 255);
  analogWrite(sixtymin_led, 255);
  delay(100);
  analogWrite(fivemin_led, 0);  
  analogWrite(fifteenmin_led, 0);
  analogWrite(sixtymin_led, 0);
}  
  
void loop()
{  
 if(doordelay == 0 )  
          {
           doordelay=doordelayminutes;
          }
          
// Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
            
//read char by char HTTP request
        if (readString.length() < 100) {
 
//store characters to string
          readString += c;
//Serial.print(c);
        }
 
        //if HTTP request has ended
        if (c == '\n') {
 
          ///////////////
          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();
 
          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; maximum-scale=1.0;\">");
          client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
          client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
          client.println("<meta http-equiv=\"refresh\" content=\"15;URL='http://192.168.1.177/'\">");
          client.println("<link rel='stylesheet' type='text/css' href='http://homeautocss.net84.net/a.css' />");
          client.println("<TITLE>Garage Door</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");
          client.println("<center>");
          client.println("<table style=\"font-family:verdana; margin:auto;\">");
          client.println("<tr>");   
          client.println("<td><H2><font face=\"verdana\">GARAGE DOOR </H2></font></td>");
          
          if(door == LOW )  
          {
           client.print("<td><H2><font face=\"verdana\" color=\"green\">CLOSED</font></H2></td>");
          }
          else
          {
           client.print("<td><H2><font face=\"verdana\" color=\"red\">OPEN</font></H2></td>");
          }
          client.println("</tr>");
          client.println("<tr>");

          if(buttonPushCounterm == 4 )  
          {
           client.print("<td><H3>CLOSER</td><td><H3>OFF</H3></td>");
          }
          else
          {
           client.print("<td><H3>CLOSER</td><td><H3>ON</H3></td>");
          }
          client.println("</tr>");
          client.println("<tr>");
          if(buttonPushCounterm == 4 )
          {
          }
          else
          {
          client.print("<td><H4>Delay</H4></td><td><H4>");
          client.print(doordelay);
          client.print(" Min</H4></td>");
          }
          client.println("</tr>");
          client.println("<tr>");
          client.print("<td><H4>Closings</H4></td><td><H4>");
          client.print(door_count);
          client.print(" Time(s)</H4></td>");
          client.println("</tr>");
          client.println("</table>");
          client.println("<table style=\"margin:auto;\">");
          client.println("<tr>");
          client.println("<a href=\"/?5min\"\">5 Min</a>

");
          client.println("</tr>");  
          client.println("<tr>");  
          client.println("<a href=\"/?20min\"\">20 Min</a>

");        
          client.println("</tr>");  
          client.println("<tr>");  
          client.println("<a href=\"/?60min\"\">60 Min</a>

");        
          client.println("</tr>");  
          client.println("<tr>");  
          client.println("<a href=\"/?999min\"\">Turn Off</a>

");        
          client.println("</tr>");  
          client.println("</table>");
          client.println("</center>");

          client.println("</BODY>");
          client.println("</HTML>");
 
          delay(1);
          //stopping client
          client.stop();
 
          if(readString.indexOf("?5min") >0)
          {
          doordelay=5;
          buttonPushCounterm = 1;
          }
        if(readString.indexOf("?20min") >0)
          {
          doordelay=20;
          buttonPushCounterm = 2;
          }
        if(readString.indexOf("?60min") >0)
          {
          doordelay=60;
          buttonPushCounterm = 3;
          }
           if(readString.indexOf("?999min") >0)
          {
          doordelay=999;
          buttonPushCounterm = 4;
          }
          //clearing string for next read
          readString="";
 
        }
      }
    }
  }


doorinterval = doordelay * oneMinute;
door = digitalRead(status_pin);
powertog = digitalRead(on_off);

if (powertog !=lastButtonStatem)
{
if (powertog == HIGH)
{
  buttonPushCounterm++;
  if (buttonPushCounterm == 5 )
  {
    buttonPushCounterm = 1;
  }
}
else
{
}
} 
lastButtonStatem = powertog;

if(buttonPushCounterm == 0)
{
  buttonPushCounterm = 2;
}
if(buttonPushCounterm == 1 )  
{ 
analogWrite(fivemin_led, 255);  
analogWrite(fifteenmin_led, 0);
analogWrite(sixtymin_led, 0);
doordelay=5;
}

if(buttonPushCounterm == 2 )  
{ 
analogWrite(fivemin_led, 255);  
analogWrite(fifteenmin_led, 255);
analogWrite(sixtymin_led, 0);
doordelay=20;
}
if(buttonPushCounterm == 3 )  
{ 
analogWrite(fivemin_led, 255);  
analogWrite(fifteenmin_led, 255);
analogWrite(sixtymin_led, 255);
doordelay=60;
}
if(buttonPushCounterm == 4 )  
{ 
analogWrite(fivemin_led, 0);  
analogWrite(fifteenmin_led, 0);
analogWrite(sixtymin_led, 0);
current_time = millis();
}
else
{
}

if(door == LOW )  
{ 
analogWrite(open_door, 0); 
analogWrite(closed_door, 255); 
current_time = millis();
}
else
{
analogWrite(open_door, 255);  
analogWrite(closed_door, 0); 
}


if( ((long)(millis() - (doorinterval + current_time)) >= 0) && powertog == LOW) // once  has past this condition should set an end for the timer.
    {
 closedoor();
 current_time = millis();
 door_count = door_count + 1;
    }
else
{
}
    
}