analogWrite freeze the arduino

here the code

//Michael sketche
//Arduino server for 8 relay, stove and RGB led strip
//for use with IDE 1.0
//open serial monitor to see what the arduino receives 
//address will look like http://192.168.1.102:84 for the ledserver
//address will look like http://192.168.1.102:85 for the relayserver
//for use with W5100 based ethernet shields

#include <SPI.h>
#include <Ethernet.h> 
boolean reading = false;

// Debug mode
#define DEBUG true

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 2, 16 }; // ip in lan
EthernetServer Ledserver(84); //Led server port
EthernetServer Relayserver(85); //Relay server port

//For arduino input
#define Doorbelloff "76" //Scene for pin 2 LOW (door bell On)
#define Doorbellon "83" //Scene for pin 2 high (door bell OFF)
#define Phoneon "81" //Scene for pin 3 LOW (telephoe ring On)
#define Phoneoff "82" //Scene for pin 3 high (telephoe ring OFF)
#define Doorbell 2 
#define Phone    3
boolean DoorbellState = false;
boolean PhoneState = false;
boolean Phonedelay = false;

//Variable for debonce phone ring
unsigned long pressed;
int pwrtime = 600;
unsigned long time;
unsigned long unpressed;


char serverName[] = "192.168.2.19"; //Vera ip address
EthernetClient client;

String readString; 

//RGB led pin
const int redPin =   9;
const int greenPin = 10;
const int bluePin =  11;

//////////////////////

void setup(){
  //start Ethernet
  Ethernet.begin(mac, ip);
  Ledserver.begin();

  //Led pin
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  
  //input 
  pinMode(Doorbell, INPUT);
  pinMode(Phone, INPUT);
  
  //relay pin
  pinMode(22, OUTPUT); //output relay pin
  pinMode(23, OUTPUT); //output relay pin
  pinMode(24, OUTPUT); //output relay pin
  pinMode(25, OUTPUT); //output relay pin
  pinMode(26, OUTPUT); //output relay pin
  pinMode(27, OUTPUT); //output relay pin
  pinMode(28, OUTPUT); //output relay pin
  pinMode(29, OUTPUT); //output relay pin
  pinMode(29, OUTPUT); //output relay pin
  
  Serial.begin(9600); 
  Serial.println("Arduino starting"); // so I can keep track of what is loaded
   if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    while(true);
  }
  else{
    Serial.println("Ethernet ready local IP:");
    Serial.println(Ethernet.localIP());
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
}

void loop(){
  Led();
  Relay();
  DoorbellDetection();
  TelephoneDetection();
  }

void Led(){
  // Create a client connection
  EthernetClient client = Ledserver.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string 
          readString += c; 
          //Serial.print(c);
        } 

        //if HTTP request has ended
        if (c == '\n') {

          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Michael led server</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>Michael test server</H1>");
          
          client.println("<a href=\"/?on\"\">ON</a>"); 
          client.println("<a href=\"/?off\"\">OFF</a>"); 

          client.println("</BODY>");
          client.println("</HTML>");
 
          delay(1);
          //stopping client
          client.stop();
          
readString = readString.substring(5, readString.length() - 11);
Serial.println(readString); //print to serial monitor for debuging 

          
int commaIndex = readString.indexOf(',');
//  Search for the next comma just after the first
int secondCommaIndex = readString.indexOf(',', commaIndex+1);

String firstValue = readString.substring(0, commaIndex);
String secondValue = readString.substring(commaIndex+1, secondCommaIndex);
String thirdValue = readString.substring(secondCommaIndex+1); // To the end of the string

int r = firstValue.toInt();
int g = secondValue.toInt();
int b = thirdValue.toInt();

Serial.println(r);
Serial.println(g);
Serial.println(b);

          //clearing string for next read
          readString="";

        }
      }
    }
  }
} 
    
}