Arduino UNO + W5100, Acionamento de Portão eletrônico

Bom dia,

Programei o arduino UNO para abrir e fechar um portão através da rede, porém depois de algum tempo o sistema trava, e só reiniciando para normalizar, acredito ser um problema no arduino UNO, porém irei postar a programação para que possam dar suas opiniões.

Obrigado.

#include <SPI.h>
#include <Ethernet.h>
  
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 212 };
     
EthernetServer server(80);
  
String readString;
int Abrir = 2;
int Fechar = 3;
  
void setup(){
  
  pinMode(Abrir, OUTPUT);
  pinMode(Fechar, OUTPUT);
  digitalWrite(Abrir, HIGH);
  digitalWrite(Fechar, HIGH);
  Ethernet.begin(mac, ip);
  server.begin();
}
  
void loop(){
   EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    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.print("<font color=#FF0000><b><u>");
          client.println("<H1>Interface de comando do portao</H1>");
          client.println("<hr />");
          client.println("
");
           
          client.println("<a href=\"/?abrir\"\">Abrir</a>");
          client.println("<a href=\"/?fechar\"\">Fechar</a>
");   
           
          client.println("</BODY>");
          client.println("</HTML>");
           
          delay(1);
          client.flush();
          client.stop();
           
          if(readString.indexOf("?abrir") > 0)
          {
            digitalWrite(Abrir, LOW);
            delay (250);
            digitalWrite(Abrir, HIGH);
          }
          else {
            if(readString.indexOf("?fechar") > 0)
            {
              digitalWrite(Fechar, LOW);
              delay (250);
            digitalWrite(Fechar, HIGH);
            }
          }
          //readString="";    
        }
      }
    }
         client.flush();
         client.stop();
  }

}