Correzione codice Arduino + Ethernet Shield

Questo codice preleva il valore dell’url tramite il metodo get e accende e spegne i led per il tempo indicato dalla variabile es. 197.168.1.177/?led=5.
Il 5 andrà a stabilire la durata di accensione e spegnimeto del led.
Il problema è che il codice viene eseguito due volte.

#include <SPI.h>
#include <Ethernet.h> 
boolean reading = false;
boolean i=true;
#define led 7
// Setup the static network info for you arduino
byte ip[] = { 192, 168, 1, 177 };   // IP Address
byte subnet[] = { 255, 255, 255, 0 }; // Subnet Mask
byte gateway[] = { 192, 168, 1, 1 }; // Gateway
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Address
int tempo=0;
EthernetServer server = EthernetServer(80); // Port 80
String HTTPget = "";
 
void setup()
{
  Serial.begin(9600);
  // pin 10, 11, 12 and 13 are used by the ethernet shield
  Ethernet.begin(mac, ip, gateway, subnet); // setup ethernet with params from above
  server.begin();
  pinMode(led, OUTPUT);
}
 
void loop()
{
  // listen for incoming clients
  EthernetClient client = server.available();
  Serial.println("Connesso");
  
  if (client) 
  {
    boolean lineIsBlank = true;
    while (client.connected())
  {
    if (client.available())
    {
      char c = client.read();
      
      if(reading && c == ' ') reading = false;
      if(c == '?') reading = true; // ? in GET request was found, start reading the info
 
      //check that we are reading, and ignore the '?' in the URL, then append the get parameter into a single string
      if(reading && c != '?') HTTPget += c;
 
      if (c == '\n' && lineIsBlank) {
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
      client.println("Connection: close");
      client.println();
      break;
      }
      if (c == '\n')
      {
        lineIsBlank = true;
        
      }
      else if (c != '\r')
      {
        lineIsBlank = false;
      } 
    }
  }
    if(i=true){
    String var_1 = HTTPget.substring(4,6);
    int tempo = var_1.toInt(); 
    digitalWrite(led, HIGH);  // accende il LED
    Serial.println("Acceso");
    delay(tempo*1000);
    //delay(5000);
    Serial.println("Spento");
    digitalWrite(led, LOW);  // spegne il LED
    delay(tempo*1000);
    //delay(5000);
    Serial.println("Disconnesso");
    i=false;
    }
    delay(1); // give the web browser a moment to recieve
    client.stop(); // close connection
  }
}

— ti ricordo che, da regolamento, NON è permesso fare “up” (sollecitare risposte) se non dopo 48 ore dall’ultimo post. Grazie. - gpb01

Così a prima vista, direi ad occhio quanto meno che questa riga:

if(i=true){

dovrebbe essere:

if(i==true){