Problema ethernet arduino

Ci siamo quasi,
ho realizzato tutto il codice:

//*Controllare motore passo passo più pompe da url di internet*//


//**url**//
//http://192.168.1.177/?led=10&led_2=10&led_3=10&led_4=10&led_5=10

//* Cambia nome alle variabili, regola il tempo per ogni pompa, crezione sito web.


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



boolean reading = false;
int dirPin = 2;
int stepperPin = 3;
int pompa_1 = 5;
int pompa_2 = 6;
int pompa_3 = 7;
int pompa_4 = 8;
int pompa_5 = 9;

int tastiera = 0;
int tastiera_2 = 0;
int tastiera_3 = 0;
//
int tastiera_4 = 0;
int tastiera_5 = 0;

int i=0; 

String HTTPget = "";

//configurazione in internet
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[] = { 90, 90, 90, 90, 90, 90 }; // MAC Address
EthernetServer server = EthernetServer(80); // Port 80


/*BUZZER*/
int buzzer=4;

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(dirPin, OUTPUT);
  pinMode(stepperPin, OUTPUT);
  pinMode(pompa_1, OUTPUT);
  pinMode(pompa_2, OUTPUT);
  pinMode(pompa_3, OUTPUT);
  pinMode(pompa_4, OUTPUT);
  pinMode(pompa_5, OUTPUT);
  pinMode(buzzer, OUTPUT);
}

void step(boolean dir,int steps){
    digitalWrite(dirPin,dir);
    delay(50);
   for(int i=0;i<steps;i++){
    digitalWrite(stepperPin, HIGH);
    delayMicroseconds(800);
    digitalWrite(stepperPin, LOW);
    delayMicroseconds(800);
 }
}
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();

      client.println("<!DOCTYPE HTML>");
      client.println("<html>");
      client.println("<center><h1 style='font-family:Arial; color: #e2424f; font-variant:small-caps;'>Arduino</h1></center>");
      client.println("
");
      client.println("<center><p>Attendi la preparazione del cocktail, quando sentirai il bip estrai il bicchiere dall'apposito supporto.</p></center>");
      client.println("<hr>");
      client.println("
");
      client.println("<center><a href='http://192.168.1.140/index.php' style='-webkit-border-radius: 60;-moz-border-radius: 60;border-radius: 60px;font-family: Arial;color: #e2424f;font-size: 20px;background: #ffffff;padding: 10px 20px 10px 20px;border: solid #e2424f 2px;text-decoration: none;'>Ritorna</a></center>");
      client.println("</html>");
      
      break;
      }
      if (c == '\n')
      {
        lineIsBlank = true;
        
      }
      else if (c != '\r')
      {
        lineIsBlank = false;
      } 
    }
  }
  if(i==0){
    //creo la variabile tempo dalla stringa url
    String var_1 = HTTPget.substring(4,6);
    int tastiera = var_1.toInt();
    //creo la variabile tempo_2 dalla stringa url
    String var_2 = HTTPget.substring(13,15);
    int tastiera_2 = var_2.toInt();
    //creo varialbile tempo_3 dalla stringa url
    String var_3 = HTTPget.substring(22,24);
    int tastiera_3 = var_3.toInt();
    //
    String var_4 = HTTPget.substring(31,33);
    int tastiera_4 = var_4.toInt();
    String var_5 = HTTPget.substring(40,42);
    int tastiera_5 = var_5.toInt();
    //blocco1
    if(tastiera != 0){
    Serial.println("Acceso");
    //il motore è già in posizione
    Serial.println("Blocco_1");
    delay(500);
    //andrà messo il relè 1 con la pompa 1
    digitalWrite(pompa_1, HIGH);
     //resta acceso fino a quando non raggiunge la capacità definita
    delay(tastiera*1500);
    //spegne il relè
    digitalWrite(pompa_1, LOW);
    delay(100);
    }else{
      Serial.println("Spento");
      //
      Serial.println("Blocco_1");
      digitalWrite(pompa_1, LOW);
      Serial.println("Tempo=0");
    }
    //blocco2
    if(tastiera_2 != 0){
    Serial.println("Acceso");
    step(HIGH,400);
    Serial.println("Blocco_2");
    delay(500);
    //andrà messo il relè 1 con la pompa 1
    digitalWrite(pompa_2, HIGH);
     //resta acceso fino a quando non raggiunge la capacità definita
    delay(tastiera_2*1500);
    //spegne il relè
    digitalWrite(pompa_2, LOW);
    delay(100);
    }else{
      Serial.println("Spento");
      step(HIGH,400);
      Serial.println("Blocco_2");
      digitalWrite(pompa_2, LOW);
      Serial.println("Tempo=0");
    }
    //blocco3
    if(tastiera_3 != 0){
    Serial.println("Acceso");
    step(HIGH,400);
    Serial.println("Blocco_3");
    delay(500);
    //andrà messo il relè 1 con la pompa 1
    digitalWrite(pompa_3, HIGH);
     //resta acceso fino a quando non raggiunge la capacità definita
    delay(tastiera_3*1500);
    //spegne il relè
    digitalWrite(pompa_3, LOW);
    delay(100);
    }else{
      Serial.println("Spento");
      step(HIGH,400);
      Serial.println("Blocco_3");
      digitalWrite(pompa_3, LOW);
      Serial.println("Tempo=0");
    }
    //blocco4
     if(tastiera_4 != 0){
    Serial.println("Acceso");
    step(HIGH,400);
    Serial.println("Blocco_4");
    delay(500);
    //andrà messo il relè 1 con la pompa 1
    digitalWrite(pompa_4, HIGH);
     //resta acceso fino a quando non raggiunge la capacità definita
    delay(tastiera_4*1500);
    //spegne il relè
    digitalWrite(pompa_4, LOW);
    delay(100);
    }else{
      Serial.println("Spento");
      step(HIGH,400);
      Serial.println("Blocco_4");
      digitalWrite(pompa_4, LOW);
      Serial.println("Tempo=0");
    }
    //blocco5
     if(tastiera_5 != 0){
    Serial.println("Acceso");
    step(HIGH,400);
    Serial.println("Blocco_5");
    delay(500);
    //andrà messo il relè 1 con la pompa 1
    digitalWrite(pompa_5, HIGH);
     //resta acceso fino a quando non raggiunge la capacità definita
    delay(tastiera_5*1500);
    //spegne il relè
    digitalWrite(pompa_5, LOW);
    delay(100);
    }else{
      Serial.println("Spento");
      step(HIGH,400);
      Serial.println("Blocco_5");
      digitalWrite(pompa_5, LOW);
      Serial.println("Tempo=0");
    }
    //ritorno
    step(LOW, 400*4);
    Serial.println("Ritorno");
    delay(500);
    /*BUZZER*/
    tone(buzzer,1000,1500);     //suona nota sul pin 12 alla frequenza di 1000Hz
    delay(2000);                        //aspetta 2 secondi
    noTone(buzzer);                //non suona
    delay(1000);
    /**/
    Serial.println("Disconnesso");
    i++;
    
    }else{
      HTTPget = "";
      i=0;
      tastiera = 0;
      tastiera_2 =0;
      tastiera_3 = 0;
      tastiera_4 =0;
      tastiera_5 = 0;
    }
  }
    delay(1); // give the web browser a moment to recieve
    client.stop(); // close connection
  }

unico problema che se da url imposto fino a un valore uguale o minore a 20 funziona.
Se ad esempio imposto da 25 in su il relè rimane diseccitato all'infinito.
SCHEMA ELETTRICO

Prova questa sottile modifica:

delay(tastiera*1500UL);