Implementar um controle de ligar e desligar o modo automático

Eu queria fazer um controle de modo automático ou desligado, eu tentei com o while, só que quando ele entra no while eu não consigo mais enviar dados pelo site html.

Se alguém puder me ajudar, parece ser simples, mas eu estou quebrando a cabeça com isso :s

Segue o código a baixo:

#include <SPI.h>
#include <Ethernet.h>
  
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 172, 16, 15, 100 };
     
EthernetServer server(80);
  
String readString;
int Pin = 6;
  
void setup(){  
  pinMode(Pin, OUTPUT);
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
}
  
void loop(){
  
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
  
        if (readString.length() < 100) {
          readString += c;             
        }
 
        if (c == '\n') {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
           
          client.println("<HTML>");
          client.println("<BODY>");
          client.println("<H1>Acende LED</H1>");
          client.println("<hr />");
          client.println("
");
           
          client.println("<a href=\"/?ledon\">Ligar o led</a>");
          client.println("<a href=\"/?ledoff\">Desligar o led</a>
");   
      
          client.println("</BODY>");
          client.println("</HTML>");
           
          delay(1);
          client.stop();

           
          //enquanto ligado executar repetidamente 
          while(readString.indexOf("?ledon") > 0){             
              Serial.print("ligado \n");
              //código automático             
          }
          //se desligado não fazer nada
          if(readString.indexOf("?ledoff") > 0){
              Serial.print("desligado \n");              
          }
       
          readString="";
             
        }
      }
    }
  }
}

Consegui implementar o código do jeito que eu queria colocando o site em uma função e usando o goto, mas pelo que eu li o goto não é muito recomendado, se alguém tiver alguma sugestão, segue o novo código a baixo:

void loop(){
  
  //função do site
  site();

    while(readString.indexOf("?ledon") > 0){
             
              Serial.print("ligado \n");

              site();

              if(readString.indexOf("?ledoff") > 0){
                 Serial.print("desligado \n");
                 goto saida;       
              }                           
          }

          if(readString.indexOf("?ledoff") > 0){
                 Serial.print("desligado \n");       
          } 
          
          saida:

        readString="";

}

Que tal isso:

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


boolean ledLigado = false;  
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 172, 16, 15, 100 };
     
EthernetServer server(80);
  
String readString;
int Pin = 6;
  
void setup(){  
  pinMode(Pin, OUTPUT);
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
}
  
void loop(){
  
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
  
        if (readString.length() < 100) {
          readString += c;             
        }
 
        if (c == '\n') {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
           
          client.println("<HTML>");
          client.println("<BODY>");
          client.println("<H1>Acende LED</H1>");
          client.println("<hr />");
          client.println("
");
          
          if(ledLigado == false) {
              client.println("<a href=\"/?ledon\">Ligar o led</a>");
          } else if (ledLigado == true) {
              client.println("<a href=\"/?ledoff\">Desligar o led</a>
");
          }   
      
          client.println("</BODY>");
          client.println("</HTML>");
           
          delay(1);
          client.stop();

         if (readString.indexOf("?ledon") > 0) {
             ledLigado = true;
             Serial.println("ligado");

              site();
           } else if (readString.indexOf("?ledoff") > 0) {
               ledLigado = false;
               Serial.println("desligado");
               site();
           
           }
  
         
          readString="";
             
        }
      }
    }
  }
}