Problema con Demo WebServer su shild ethernet

Salve a tutti, vi chiedo un aiuto per capire dove stò sbagliando.
Le premesse sono :

  • Arduino uno R. 3
  • Ethernet Shild con w5100

Premetto che ho reindirizzato le porte del router ( Vodafone Station 2 ) e per la comunicazione dall’ “esterno” ho attivato il servizio no-ip

Ho seguito varie guide e sono arrivato a questo :

/*
  Web Server Demo
  thrown together by Randy Sarafan
 
 Apertura elettroserratura
 
 To turn it on:
 http://your-IP-address/$1
 
 To turn it off:
 http://your-IP-address/$2
 
*/

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

boolean incoming = 0;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(192,168,1,7); //<<< ENTER YOUR IP ADDRESS HERE!!!

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT); // Tenda su
  pinMode(4, OUTPUT); // Stop
  pinMode(5, OUTPUT); // Tenda Giu
  //pinMode(6, OUTPUT); // Tenda meta

  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
}

void loop()
{
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        
        //reads URL string from $ to first blank space
        if(incoming && c == ' '){ 
          incoming = 0;
        }
        if(c == '

Il problema fondamentale e’ che il server funziona per un po’ ( i tempi sono random ) e poi si blocca e devo resettare…con il pulsante.
Quando si blocca dice che la pagina non risponde, che io usi l’indirizzo locale che quello assegnato da no-ip.

Qualche suggerimento ?

Grazie a tutti.

){
         incoming = 1;
       }
       
       //Checks for the URL string after $
       if(incoming == 1){
         Serial.println(c);
         
         if(c == ‘1’){
           Serial.println(“ON”);
           digitalWrite(2, HIGH);
   delay(1000);
           digitalWrite(2, LOW);
           delay(1000);
   digitalWrite(2, HIGH);
   delay(1000);
           digitalWrite(2, LOW);
           delay(1000);
   digitalWrite(2, HIGH);
   delay(1000);
           digitalWrite(2, LOW);
           delay(1000);
   digitalWrite(2, HIGH);
   delay(1000);
           digitalWrite(2, LOW);
           delay(1000);
   digitalWrite(2, HIGH);
   delay(1000);
           digitalWrite(2, LOW);
         }
         if(c == ‘2’){
           Serial.println(“OFF”);
           digitalWrite(2, LOW);
         }
         if(c == ‘3’){
           Serial.println(“ON”);
           digitalWrite(3, HIGH);
           digitalWrite(4, LOW);
           digitalWrite(5, LOW);
   digitalWrite(6, LOW);
         }//Tenda su
         if(c == ‘4’){
           Serial.println(“ON”);
           digitalWrite(3, LOW);
           digitalWrite(4, HIGH);
           digitalWrite(5, LOW);
           digitalWrite(6, LOW);
 }//Tenda stop
         if(c == ‘5’){
           Serial.println(“ON”);
           digitalWrite(3, LOW);
           digitalWrite(4, LOW);
           digitalWrite(5, HIGH);
           digitalWrite(6, LOW);
 }//Tenda giu
         if(c == ‘m’){
           Serial.println(“ON”);
           digitalWrite(3, HIGH);
           delay(6000);           //Tempo di salita
           digitalWrite(3, LOW);
           delay(10);
           digitalWrite(5, HIGH);
           delay(3000);           //Tempo per mezzo
           digitalWrite(5, LOW);
           delay(1000);
           digitalWrite(4, HIGH);
           delay(1000);
           digitalWrite(4, HIGH);
           digitalWrite(3, HIGH);
           digitalWrite(5, HIGH);
           digitalWrite(6, HIGH);

  }

}

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(1);
   // close the connection:
   client.stop();
   }
}


Il problema fondamentale e' che il server funziona per un po' ( i tempi sono random ) e poi si blocca e devo resettare...con il pulsante.
Quando si blocca dice che la pagina non risponde, che io usi l'indirizzo locale che quello assegnato da no-ip.

Qualche suggerimento ?

Grazie a tutti.