Modifica programma

Buongiorno a tutti e grazie per l'aiuto che date
sono alle prime armi con la programmazione per cui vi chiedo un aiuto.
Il programma che vi posto funziona perfettamente l'unico problema e che non riesco a fare una modifica. Allora sui pin 2 e 3 quando mando lo stato on vorrei solo un impulso di un paio di secondi e far tornare lo stato in off automaticamente , invece attualmente il programma mi permette di fare on o off ma solo manualmente. (Devo dare di nuovo il consenso per far tornare la condizione off)
Grazie

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


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] =  { 192,168,0,108 };

const int MAX_PAGENAME_LEN = 8; // max characters in page name 
char buffer[MAX_PAGENAME_LEN+1]; // additional character for terminating null

EthernetServer server(80);



void setup()
{
  
  Serial.begin(9600);
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  
 
  
  Ethernet.begin(mac, ip);
  server.begin();
  digitalWrite(10,HIGH);
  delay(2000);
}

void loop()
{
  EthernetClient client = server.available();
  if (client) 
  {
    int type = 0;
    while (client.connected()) 
     {
        if (client.available()) 
        {
        // GET, POST, or HEAD
         memset(buffer,0, sizeof(buffer)); // clear the buffer | scrive l'array con 0
         if(client.readBytesUntil('/',buffer,sizeof(buffer)))
         { 
          if(strcmp(buffer,"POST ") == 0)  //cerca la scritta post http://ruturajv.wordpress.com/2005/12/25/http-post-request/
          {
            client.find("\n\r"); // skip to the body
            // find string starting with "pin", stop on first blank line
            // the POST parameters expected in the form pinDx=Y
            // where x is the pin number and Y is 0 for LOW and 1 for HIGH
            while(client.findUntil("pinD", "\n\r")){
              int pin = client.parseInt();       // the pin number
              int val = client.parseInt();       // 0 or 1
              pinMode(pin, OUTPUT);
              digitalWrite(pin, val);
              
            }
          }
          sendHeader(client,"Domotica");
          //create HTML button to control pin 8
          client.println("<h2>Controllo Pin Digitali</h2>");
          client.println("<table border='1' >");
          for(int i=2;i<=3;i++)
           {
            client.print("<tr><td>digital pin ");
            client.print(i);
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.println(" value='0'><input type='submit' value='Off'/></form>");
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.print(" value='1'><input type='submit' value='On'/></form>");
            client.print(" </td><td>stato: ");
            if(digitalRead(i)==1)
               client.print("ON");
             else
               client.print("OFF");
            client.println("</td></tr>");
            }
          
          for(int i=5;i<10;i++)
           {
            client.print("<tr><td>digital pin ");
            client.print(i);
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.println(" value='0'><input type='submit' value='Off'/></form>");
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.print(" value='1'><input type='submit' value='On'/></form>");
            client.print(" </td><td>stato: ");
            if(digitalRead(i)==1)
               client.print("ON");
             else
               client.print("OFF");
            client.println("</td></tr>");
            }
          
          
          client.println("</table>");
          client.println("</body></html>");
          client.stop();
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    client.stop();
  }
}

void sendHeader(EthernetClient client, char *title)
{
  // send a standard http response header
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println();
  client.print("<html><head><title>");
  client.print(title);
  client.println("</title><body>");
}

Benvenuto nel forum!
Ti invito a leggere il regolamento e a rieditare il tuo precedente post:
http://forum.arduino.cc/index.php?topic=149082.0

Imposta un conteggio con millis() che attivi alla pressione del pulsante e che dopo l'intervallo preimpostato ti riporta lo stato del segnale LOW.
Naturalmente il segnale passa HIGH alla pressione del pulsante.

Usa la macro F() nelle stampe di testo per risparmiare RAM
al posto di:
client.println("");
scrivi
client.println(F(""));
cosí il testo non viene copiato nella Ram prima di essere stampato.

E uas anche i TAG code ( icona #) per includere uno Sketch.

Ciao Uwe

Vi ringrazio per l'aiuto e chiedo scusa se ho inserito erroneamente il codice sul forum
Per Paolo.. avevo realizzato uno sketch con il ritardo che ti posto ma non so come modificare il codice che ho postato all'inizio... non avendolo fatto io l'ho solo modificato aggiungendo tutti i pin...se mi puoi aiutare...
per uwefed provvedo a fare la correzione...
Grazie ancora

if(readString.startsWith("GET /?out=7&status=1"))
{Serial.print("\n 7 LOW HIGH\n");
digitalWrite(7, LOW);
delay(100);
digitalWrite(7, HIGH);
client.print("{\"status\" : \"1\" , \"out\" : \"");
client.print(7);
client.print("\"}");

Nessuno mi aiuta?
Grazie