Ajuda com atuador acionado atraves de ethernet (enc28j60)

Depois de upar o sketch, o servo age uma única vez. Eu gostaria que ele atuasse sempre que necessário, mas isso não acontece
Alem disso, quando eu faço a chamada da função mexeservo no código, o site atualiza algumas vezes e depois cai. Não sei o porquê dessa função atrapalhar o funcionamento da conexão…

Estou usando um arduino mega 2560 e um modulo ethernet enc28j60

#include <UIPEthernet.h> // Used for Ethernet
#include <Servo.h>
Servo servo;
int i = 0;
int minimo = 1; //posicao minima servo do lado da torneira
int maximo = 70; //posicao maxima servo do lado da garrafa
int pino = 7;

// **** ETHERNET SETTING ****
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEE  };
IPAddress ip(192, 168, 0, 120);
EthernetServer server(80);
String readString; //string que vai pegar a url no futuro

void setup() {
  Serial.begin(9600);
  pinMode(A7, INPUT);
  servo.attach(pino);
  servo.write(7);
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();

  Serial.print("IP Address: ");
  Serial.println(Ethernet.localIP());

}
void mexeservo() //funcao de movimentacao do servo
{
  int pos = 0;
  int j = 0;
  Serial.println("Entrando no laço IF");
  servo.write(1);
  for (j = minimo; j < maximo; j++)
  {
    pos = j;
    servo.write(pos);
    delay(10);
  }
  delay(500);
  for (j = maximo; j > minimo; j--) //variavel maximo = torneira fechada
  {
    pos = j;
    servo.write(pos);
    delay(10);
  }
  //readString = "";
}

void loop() {
  // listen for incoming clients //Recebendo solicitacao de conexao dos navegadores e enviando a pag html
  EthernetClient client = server.available();

  if (client)
  {
    Serial.println("-> New Connection");

    // an http request ends with a blank line
    boolean currentLineIsBlank = true;

    while (client.connected())
    {
      if (client.available())
      {

        char c = client.read();


        if (readString.length() < 100) {
          readString += c;
        }
        //client.read lê a url. Se ela chega ao fim (\n), entao o site pode começar a enviar a url determinada. readString esta recebendo essa url, um caracter por vez
        if (c == '\n')
        {
          Serial.println("Fazendo conexão. Dentro do if c=='\n'");
          int  sensor = analogRead(A7);
          client.println("<!DOCTYPE html>");
          client.println("<html><head><style> input{width:30%;} #pontoagua{width:50%;}  #dadoapp{width: 10%;}  #fechado{width: 10%;}#visualizador{width: 26%}</style>");
          client.println("<meta charset=\"UTF-8\"><title>Servidor Arduino!</title></head>");
          client.println("<body> <div id=\"leitura\"><h1>Servidor Arduino</h1> <p> Umidade: <input type=\"number\" name=\"sensorumidade\" id=\"sensor\" value=" );
          client.println(sensor);
          Serial.println("\nTentando printar valor do sensor no site: ");
          Serial.println(sensor);
          client.println("/>
");
          client.println("Sequidão maxima antes da irrigação:<input type=\"number\" name=\"visualizador\" id=\"visualizador\">

");
          client.println("

 <button id=\"refresh\" onclick=\"REFRESH()\" type=\"button\"> <strong>Atualizar
ʕ•ᴥ•ʔ </strong> </button>");
          client.println("<form name =\"formulario\" method=\"get\" id =\"formulario\">");
          client.println("Definir sequidão maxima: 
 <em>Mais umida <input type=\"range\" name=\"pontoagua\" id=\"pontoagua\" min=\"0\" max=\"1024\" oninput=\"visualizador.value=pontoagua.value\"/> Mais seco</em>");
          client.println("
<ul><li><input type=\"radio\" id =\"dadoapp\" name=\"dadoapp\" value=\"aberto\"> Aberto<li><input type=\"radio\" id =\"fechado\" name=\"dadoapp\" value=\"fechado\"> Fechado </ul>");
          client.println("<a href =\"javascript: formulation()\"><button onclick=\"formulation()\"> <em>Mudar Parametros</em>
 ಠ‿↼ </button> </a></form></p></div>");

          client.println("<div id =\"fazer\" style=\"display: none\"><p><img src =\"https://thumbs.gfycat.com/SilentDecimalEarthworm-small.gif\" alt=\"Umidificando plantas\"></p></div>");
          client.println("<script>"); //inicio javascript
          client.println("var formulation = function submitform(){ document.getElementById(\"fazer\").style.display='block';");
          delay(1000);
          client.println("document.formulario.submit(); };");
          client.println("window.location.replace(\"http://192.168.0.120\");"); // para retornar ao ip original

          client.println("var sequidao = document.getElementById(\"pontoagua\").value;"); //variavel que armazena limite de sequidao, definido pelo controle deslizante
          client.println("umidade = ");
          client.println(sensor);
          client.println("var REFRESH = function() ");
          client.println ("{window.location.reload(); };");
          client.println(";if (umidade>=sequidao) { document.getElementById(\"fazer\").style.display='block';");
          delay(1000);
          client.println("document.getElementById(\"dadoapp\").checked=\"checked\"; formulation(); formulario.submit();} else {document.getElementById(\"dadoapp\").checked=false; formulation(); formulario.submit();}");

          client.println("console.log(umidade);");
          client.println("console.log(sequidao);");
          client.println("</script></body></html>");

          break;
        }

        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;

        }
        else if (c != '\r')
        {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }

    }


    // give the web browser time to receive the data
    delay(10);

    // close the connection:
    client.stop();
    if (readString.indexOf("dadoapp=aberto") > 0) //, "&" adicionar este arrgumento caso a ideia seja olhar a url a partir do caractee &
    {
      mexeservo();
      Serial.println("Atuar!");
    }
    Serial.println("   Disconnected\n");

  }

}

Como assim o site actualiza e cai?

Acho que tens de ser um pouco mais especifíco.
Nota que esses delays no código não ajudam...

O intuito do código era que o site se atualizasse constantemente, para que o navegador recebesse dados renovados, e então quando o valor recebido pelo sensor de umidade fosse maior que o valor estipulado pelo usuário (dentro do site) o servo atuasse.
Nos cenários em que eu não faço a chamada da função mexeservo, ele faz tudo isso direitinho. Porém quando eu faço a chamada da função, o navegador é capaz de atualizar a pagina uma ou duas vezes antes de parar...