problema casetta domotica comandata da browser

ciao a tutti, sto costruendo come progetto scolastico un modellino di una casetta domotica però sto avendo difficoltà con il programma che dovrebbe controllarla... in pratica tempo fa sviluppai una prima versione del programma che era completamente funzionante; oggi ho ripreso il progetto per aggiungere delle funzioni al linguaggio e dopo l'agginuta delle funzioni la mia Arduino uno non esegue più nessun comando al momento in cui io vado a clickare sui link della pagina html di controllo... lascio i due codici qua sotto

p.s. scusate per i 3 post ma il limite di caratteri mi impediva di farne di meno
edit: rimuovendo qualche funzione il codice modificato torna a funzionare, che la scheda non riesca a reggere il programma? se si, come posso alleggerirlo?

codice originale

#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
//import librerie
byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED};
IPAddress ip(192,168,0,112);
EthernetServer server(80);
//riferimenti server
Servo sp1;
Servo sp2;//sp 1 e 2= pin di attacco dei servo
const int led1=3;
const int led2=4;
const int led3=7;
const int led4=8;// led 1-4= illuminazione 
const int tap=9;//tap= controllo tapparelle
int op=90;
int oc=170;//od e oc= angolo di arrivo e di partenza dei servo
String readString;
boolean sl1=false;
boolean sl2=false;
boolean sl3=false;
boolean sl4=false;
boolean ssp1=false;
boolean ssp2=false;
boolean st=false;
void setup(){
  sp1.attach(5);
  sp2.attach(6);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4,OUTPUT);
  pinMode(tap,OUTPUT);//setup pin necessari
  Serial.begin(9600);//avvio porta serial per il debug
  Ethernet.begin(mac,ip);
  Serial.print("Server is at: ");
  Serial.println(Ethernet.localIP());//stampo l'indirizzo del server
  server.begin();//avvio server
}
void loop(){
  EthernetClient client=server.available();//controllo server è online e se il client è connesso
  if (client){
    boolean currentlineisblank= true;
    while (client.connected()){
      if (client.available()){
      char c=client.read();//leggo i dati del client
      readString.concat(c);//memorizzo i caratteri in una stringa
      if(c=='\n'&&currentlineisblank){//se la richiesta html è terminata
        Serial.print(readString);
        if(readString.indexOf("led1ON")>0){
          digitalWrite(led1,HIGH);
          sl1=true;
        }
        if(readString.indexOf("led1OFF")>0){
          digitalWrite(led1,LOW);
          sl1=false;
        }
        if(readString.indexOf("led2ON")>0){
          digitalWrite(led2,HIGH);
          sl2=true;
        }
        if(readString.indexOf("led2OFF")>0){
          digitalWrite(led2,LOW);
          sl2=false;
        }
        if(readString.indexOf("led3ON")>0){
          digitalWrite(led3,HIGH);
          sl3=true;
        }
        if(readString.indexOf("led3OFF")>0){
          digitalWrite(led3,LOW);
          sl3=false;
        }
        if(readString.indexOf("led4ON")>0){
          digitalWrite(led4,HIGH);
          sl4=true;
        }
        if(readString.indexOf("led4OFF")>0){
          digitalWrite(led4,LOW);
          sl4=false;
        }
        if(readString.indexOf("tapON")>0){
          digitalWrite(tap,HIGH);
          st=true;
        }
        if(readString.indexOf("tapOFF")>0){ 
          digitalWrite(tap,LOW);
          st=false;
        }
        if(readString.indexOf("porta1OP")>0){
          sp1.write(op);
          ssp1=true;
        }
        if(readString.indexOf("porta1CL")>0){
          sp1.write(oc);
          ssp1=false;
        }
         if(readString.indexOf("porta2OP")>0){
          sp2.write(op);
          ssp2=true;
        }
         if(readString.indexOf("porta2CL")>0){
          sp2.write(oc);
          ssp2=false;
        }
      
      client.println("HTTP/1.1 200 OK");//inizio a creare i controlli
      client.println("Content-Type: text/html");
      client.println();
      client.println("<html><head><title>ArduHome alpha</title></head><body>");
      client.println("<h1>Arduhome Alpha</h1><h2>v. 0.1</h2>");
      client.println("<h1>led1</h1>");
      client.println("<span>led1 status: </span>");
      if(sl1){
        client.println("<span style='color:green'>ON</span>");
        client.println("<h2><a href=' /?led1OFF'>SPEGNI</a><h2>");
      }else{
        client.println("<span style='color:red'>OFF</span>");
        client.println("<h2><a href=' /?led1ON'>ACCENDI</a><h2>");
      }
      client.println("<span>led2 status: </span>");
      if(sl2){
        client.println("<span style='color:green'>ON</span>");
        client.println("<h2><a href=' /?led2OFF'>SPEGNI</a><h2>");
      }else{
        client.println("<span style='color:red'>OFF</span>");
        client.println("<h2><a href=' /?led2ON'>ACCENDI</a><h2>");
      }
      client.println("<span>led3 status: </span>");
      if(sl3){
        client.println("<span style='color:green'>ON</span>");
        client.println("<h2><a href=' /?led3OFF'>SPEGNI</a><h2>");
      }else{
        client.println("<span style='color:red'>OFF</span>");
        client.println("<h2><a href=' /?led3ON'>ACCENDI</a><h2>");
      }
      client.println("<span>led4 status: </span>");
      if(sl4){
        client.println("<span style='color:green'>ON</span>");
        client.println("<h2><a href=' /?led4OFF'>SPEGNI</a><h2>");
      }else{
        client.println("<span style='color:red'>OFF</span>");
        client.println("<h2><a href=' /?led4ON'>ACCENDI</a><h2>");
      }  
      client.println("<span>tap status: </span>");
      if(st){
        client.println("<span style='color:green'>ON</span>");
        client.println("<h2><a href=' /?tapOFF'>SPEGNI</a><h2>");
      }else{
        client.println("<span style='color:red'>OFF</span>");
        client.println("<h2><a href=' /?tapON'>ACCENDI</a><h2>");
      }
      client.println("<span>door1 status: </span>");
      if(ssp1){
        client.println("<span style='color:green'>OPEN</span>");
        
      }else{
        client.println("<span style='color:red'>CLOSED</span>");
        
      }
      client.println("<h2><a href=' /?porta1OP'>APRI</a>|<a href='/?porta1CL'>CHIUDI</a></h2>");
      client.println("<span>door2 status: </span>");
      if(ssp2){
        client.println("<span style='color:green'>OPEN</span>");
      }else{
        client.println("<span style='color:red'>CLOSED</span>");
      }
      client.println("<h2><a href=' /?porta2OP'>APRI</a>|<a href='/?porta2CL'>CHIUDI</a></h2>");
      client.println("</body></html>");
      readString="";
      client.stop();
    }
   }
  }
}
}

codice con funzioni aggiunte (ad eccezione dei due servo, i restanti sono tutti led da far blinkare\accendere)

#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
//import librerie
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 0, 107);
EthernetServer server(80);
//riferimenti server
Servo sp1;
Servo sp2;//sp 1 e 2= pin di attacco dei servo
const int led1 = 3;
const int led2 = 4;
const int led3 = 7;
const int led4 = 8; // led 1-4= illuminazione
//controllo mp3 e temperatura
boolean sl1=false;
  boolean sl2=false;
  boolean sl3=false;
  boolean sl4=false;
  boolean ssp1=false;
  boolean ssp2=false;
  boolean st=false;
  boolean hes=false;
int op = 90;
int oc = 170; //od e oc= angolo di arrivo e di partenza dei servo
String readString;

void setup() {
  sp1.attach(5);
  sp2.attach(6);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(14, OUTPUT);
  pinMode(15, OUTPUT);
  pinMode(16, OUTPUT);
  pinMode(15, OUTPUT);
  pinMode(18, OUTPUT); //setup pin necessari
  Serial.begin(9600);//avvio porta serial per il debug
  Ethernet.begin(mac, ip);
  Serial.print("Server is at: ");
  Serial.println(Ethernet.localIP());//stampo l'indirizzo del server
  server.begin();//avvio server
}
void loop() {
  
  EthernetClient client = server.available(); //controllo server è online e se il client è connesso
  if (client) {
    Serial.println("new client");
    boolean currentlineisblank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read(); //leggo i dati del client
        
        readString.concat(c);//memorizzo i caratteri in una stringa
        if (c == '\n' && currentlineisblank) { //se la richiesta html è terminata
          Serial.print(readString);
          if (readString.indexOf("led1ON") > 0) {
            Serial.println(
            digitalWrite(led1, HIGH);
            sl1 = true;
            Serial.println("l1on ");
          }
          if (readString.indexOf("led1OFF") > 0) {
            digitalWrite(led1, LOW);
            sl1 = false;
            Serial.println("l1off ");
          }
          if (readString.indexOf("led2ON") > 0) {
            digitalWrite(led2, HIGH);
            sl2 = true;
            Serial.println("l2on ");
          }
          if (readString.indexOf("led2OFF") > 0) {
            digitalWrite(led2, LOW);
            sl2 = false;
            Serial.println("l2off ");
          }
          if (readString.indexOf("led3ON") > 0) {
            digitalWrite(led3, HIGH);
            sl3 = true;
            Serial.println(" l3on");
            
          }
          if (readString.indexOf("led3OFF") > 0) {
            digitalWrite(led3, LOW);
            sl3 = false;
            Serial.println("l3off ");
          }
          if (readString.indexOf("led4ON") > 0) {
            digitalWrite(led4, HIGH);
            sl4 = true;
            Serial.println("l4on ");
          }
          if (readString.indexOf("led4OFF") > 0) {
            digitalWrite(led4, LOW);
            sl4 = false;
            Serial.println("l4off ");
          }

          if (readString.indexOf("porta1OP") > 0) {
            sp1.write(op);
            ssp1 = true;
            Serial.println("p1op ");
          }
          if (readString.indexOf("porta1CL") > 0) {
            sp1.write(oc);
            ssp1 = false;
            Serial.println("p1cl ");
          }
          if (readString.indexOf("porta2OP") > 0) {
            sp2.write(op);
            ssp2 = true;
            Serial.println("p2op ");
          }
          if (readString.indexOf("porta2CL") > 0) {
            sp2.write(oc);
            ssp2 = false;
            Serial.println("p2cl ");
          }
          if (readString.indexOf("play") > 0) {
            digitalWrite(14, HIGH);
            delay(1000);
            digitalWrite(14, LOW);
            Serial.println("play");
          }
          if (readString.indexOf("down") > 0) {
            digitalWrite(16, HIGH);
            delay(1000);
            digitalWrite(16, LOW);
          }
          if (readString.indexOf("left") > 0) {
            digitalWrite(15, HIGH);
            delay(1000);
            digitalWrite(15, LOW);
            Serial.println("left");
          }
          if (readString.indexOf("right") > 0) {
            digitalWrite(15, HIGH);
            delay(1000);
            digitalWrite(15, LOW);
            Serial.println("right");
          }
          if (readString.indexOf("center") > 0) {
            digitalWrite(18, HIGH);
            delay(1000);
            digitalWrite(18, LOW);
            Serial.println("center");
          }
          if (readString.indexOf("heson") > 0) {
            digitalWrite(14, HIGH);
            delay(5000);
            digitalWrite(14, LOW);
            hes = true;
          }
          if (readString.indexOf("hesoff") > 0) {
            digitalWrite(14, HIGH);
            delay(5000);
            digitalWrite(14, LOW);
            hes = false;
          }

          client.println("HTTP/1.1 200 OK");//inizio a creare i controlli
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html><head><title>ArduHome alpha</title></head><body>");
          client.println("<h1>Arduhome Alpha</h1><h2>v. 0.1</h2>");
          client.println("<h1>led1</h1>");
          client.println("<span>led1 status: </span>");
          if (sl1) {
            client.println("<span style='color:green'>ON</span>");
            client.println("<h2><a href=' /?led1OFF'>SPEGNI</a><h2>");
          } else {
            client.println("<span style='color:red'>OFF</span>");
            client.println("<h2><a href=' /?led1ON'>ACCENDI</a><h2>");
          }
          client.println("<span>led2 status: </span>");
          if (sl2) {
            client.println("<span style='color:green'>ON</span>");
            client.println("<h2><a href=' /?led2OFF'>SPEGNI</a><h2>");
          } else {
            client.println("<span style='color:red'>OFF</span>");
            client.println("<h2><a href=' /?led2ON'>ACCENDI</a><h2>");
          }
          client.println("<span>led3 status: </span>");
          if (sl3) {
            client.println("<span style='color:green'>ON</span>");
            client.println("<h2><a href=' /?led3OFF'>SPEGNI</a><h2>");
          } else {
            client.println("<span style='color:red'>OFF</span>");
            client.println("<h2><a href=' /?led3ON'>ACCENDI</a><h2>");
          }
          client.println("<span>led4 status: </span>");
          if (sl4) {
            client.println("<span style='color:green'>ON</span>");
            client.println("<h2><a href=' /?led4OFF'>SPEGNI</a><h2>");
          } else {
            client.println("<span style='color:red'>OFF</span>");
            client.println("<h2><a href=' /?led4ON'>ACCENDI</a><h2>");
          }
          client.println("<span>door1 status: </span>");
          if (ssp1) {
            client.println("<span style='color:green'>OPEN</span>");

          } else {
            client.println("<span style='color:red'>CLOSED</span>");

          }
          client.println("<h2><a href=' /?porta1OP'>APRI</a>|<a href='/?porta1CL'>CHIUDI</a></h2>");
          client.println("<span>door2 status: </span>");
          if (ssp2) {
            client.println("<span style='color:green'>OPEN</span>");
          } else {
            client.println("<span style='color:red'>CLOSED</span>");
          }
          client.println("<h2><a href=' /?porta2OP'>APRI</a>|<a href='/?porta2CL'>CHIUDI</a></h2>");
          client.println("<h1>controllo home entertainment system</h1>");
          client.println("<h1><a href=' /?play'>play</h1>");
          client.println("<h1><a href=' /?down'>down</h1>");
          client.println("<h1><a href=' /?left'>left</h1>");
          client.println("<h1><a href=' /?right'>right</h1>");
          client.println("<h1><a href=' /?center'>center</h1>");
          if (hes) {
            client.println("<h1><a href=' /?heson'>TV ON</h1>");
          } else {
            client.println("<h1><a href=' /?hesoff'>TV OFF</h1>");
          }
          client.println("</body></html>");
          readString = "";
          client.stop();
        }
      }
    }
  }
}