Accendere led con arduino da web

Ciao a tutti ,da qualche giorno (essendo alle prime armi con arduino) mi sto scervellando per accendere 8 led da remoto con Arduino Ethernet ...
In rete avevo trovato un codice che faceva al caso mio ma puo' controllare solo un led...

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

/*
Simple Ethernet Test
Arduino server outputs simple text to browser
and controlling LED with simple checkbox
The circuit:
* Arduino Duemilanove
* Arduino Ethernet shield
* Basic FTDI breakout 5V
* LED connected to GND and digital pin 4 via resistor
*/

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 123 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port

int ledPin = 9; // LED pin
char link[]="http://www.ioscripto.it"; //link data
String readString; //string
boolean LEDON = false; //LED status flag

void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop(){
EthernetClient client = server.available();
if (client) {
  boolean currentLineIsBlank = true;
  while (client.connected()) {
    if (client.available()) {
      char c = client.read();
        readString.concat(c); //store characters to string
      //if HTTP request has ended
      if (c == '\n' && currentLineIsBlank) {
         Serial.print(readString);
        if(readString.indexOf("L=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(ledPin, HIGH); // set the LED on
          LEDON = true;
          }else{
          //led has to be turned OFF
          digitalWrite(ledPin, LOW); // set the LED OFF
          LEDON = false;
        }
        // now output HTML data starting with standart header
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        // inizializzo pagina (da togliere se uso ajax)
        client.print("<html><head><title>ARDUINO Controllo Led via WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
        //send first heading
        client.println("<h1>LED CONTROL by internet connection</h1>");
        client.println("<hr />");
        client.println("<h1>LED control</h1>");
        //address will look like http://192.168.1.110/?L=1 when submited
        client.println("<form method=get name=LED><input type=checkbox name=L value=1>LED
<input type=submit value=submit></form>");
        client.println("
");
        //printing LED status
        client.print("<span>LED status: </span>");

          if (LEDON) {
          	client.println("<span style='color:green'>ON</span>");
            }
            else
            {
          	client.println("<span style='color:grey'>OFF</span>");
          }
        

       

        // chiudo pagina da togliere se uso ajax
        client.println("</body></html>");

        //clearing string for next read
        readString="";
        //stopping client
        client.stop();

        } //if c == /n .... devo capire che significa
    } // if client available
  } // while client connesso
} // if client
} //loo

Come posso fare per controllare 8 led con questo sitema??

Messaggio modificato da moderatore:
</mark> <mark>[code]</mark> <mark>

</mark> <mark>[/code]</mark> <mark>
tags aggiunto.

Nello shetch che hai postato è questo che arduino legge per accendere il led
if(readString.indexOf("L=1") > 0)

per > 0 si intende "se "L=1" è presente nella stringa proveniente dal client, altrimenti indexof se int restituisce -1, se byte restituisce 255

devi solo aumentare i controlli nello sketch e aumentare i tasti nella paginetta web, tanti quanti sono i tuoi leds, si potrebbe inviare anche un solo byte dove è contenuto il numero del pin e l'informazione on/off, per ora studiati questo a semplificare il criterio c'è sempre tempo.

//if c == /n .... devo capire che significa

non è /n ma \n

\n ... Carattere di nuova riga è equivalente al carattere di avanzamento riga ASCII (hex 0A)
\r ... Ritorno a capo/avanzamento riga (13 o hex 0x0d)

ciao

Quindi potrebbe andare bene così:

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


/*
Simple Ethernet Test
Arduino server outputs simple text to browser
and controlling LED with simple checkbox
The circuit:
* Arduino Duemilanove
* Arduino Ethernet shield
* Basic FTDI breakout 5V
* LED connected to GND and digital pin 4 via resistor
*/

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 123 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port

int l9 = 9; // LED pin
int l8 = 8;
int l7 = 7;
int l6 = 6;
int l5 = 5;
int l4 = 4;
int l3 = 3;
int l2 = 2;
String readString; //string
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(l9, OUTPUT);
pinMode(l8, OUTPUT);
pinMode(l7, OUTPUT);
pinMode(l6, OUTPUT);
pinMode(l5, OUTPUT);
pinMode(l4, OUTPUT);
pinMode(l3, OUTPUT);
pinMode(l2, OUTPUT);
Serial.begin(9600);
}

void loop(){
EthernetClient client = server.available();

         Serial.print(readString);
        if(readString.indexOf("l9=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l9, HIGH); // set the LED on
          }else{
          //led has to be turned OFF
          digitalWrite(l9, LOW); // set the LED OFF

          if(readString.indexOf("l8=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l8, HIGH); // set the LED on

          }else{
          //led has to be turned OFF
          digitalWrite(l8, LOW); // set the LED OFF

          if(readString.indexOf("l7=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l7, HIGH); // set the LED on

          }else{
          //led has to be turned OFF
          digitalWrite(l7, LOW); // set the LED OFF

          if(readString.indexOf("l6=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l6, HIGH); // set the LED on
   
          }else{
          //led has to be turned OFF
          digitalWrite(l6, LOW); // set the LED OFF
  
          if(readString.indexOf("l5=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l5, HIGH); // set the LED on
       
          }else{
          //led has to be turned OFF
          digitalWrite(l5, LOW); // set the LED OFF

          if(readString.indexOf("l4=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l4, HIGH); // set the LED on

          }else{
          //led has to be turned OFF
          digitalWrite(l4, LOW); // set the LED OFF

          if(readString.indexOf("l3=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l3, HIGH); // set the LED on

          }else{
          //led has to be turned OFF
          digitalWrite(l3, LOW); // set the LED OFF
 
          if(readString.indexOf("l2=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l2, HIGH); // set the LED on
       
          }else{
          //led has to be turned OFF
          digitalWrite(l2, LOW); // set the LED OFF

      
          
}

Scusate se continuo a disturbarvi ma dove'è l'errore in questo cod? Non riesco a capire!

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

/*
Simple Ethernet Test
 Arduino server outputs simple text to browser
 and controlling LED with simple checkbox
 The circuit:
 * Arduino Duemilanove
 * Arduino Ethernet shield
 * Basic FTDI breakout 5V
 * LED connected to GND and digital pin 4 via resistor
 */

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 
  192, 168, 1, 123 }; // ip in lan
byte gateway[] = { 
  192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 
  255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
int l9 = 9; // LED pin
int l8 = 8;
int l7 = 7;
int l6 = 6;
int l5 = 5;
int l4 = 4;
int l3 = 3;
int l2 = 2;
int ledPin = 9; // LED pin
char link[]="http://www.ioscripto.it"; //link data
String readString; //string
boolean LEDON = false; //LED status flag

void setup(){
  Ethernet.begin(mac, ip, gateway, subnet);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  pinMode(l9, OUTPUT);
  pinMode(l8, OUTPUT);
  pinMode(l7, OUTPUT);
  pinMode(l6, OUTPUT);
  pinMode(l5, OUTPUT);
  pinMode(l4, OUTPUT);
  pinMode(l3, OUTPUT);
  pinMode(l2, OUTPUT);
  Serial.begin(9600);
}



void loop(){


                EthernetClient client = server.available();
                if (client) {
                  boolean currentLineIsBlank = true;
                  while (client.connected()) {
                    if (client.available()) {
                      char c = client.read();
                      readString.concat(c); //store characters to string
                      //if HTTP request has ended
  if(readString.indexOf("l9=1") > 0) {//lets check if LED should be lighted
    //led has to be turned ON
    digitalWrite(l9, HIGH); // set the LED on
  }
  else{
    //led has to be turned OFF
    digitalWrite(l9, LOW); // set the LED OFF

    if(readString.indexOf("l8=1") > 0) {//lets check if LED should be lighted
      //led has to be turned ON
      digitalWrite(l8, HIGH); // set the LED on

    }
    else{
      //led has to be turned OFF
      digitalWrite(l8, LOW); // set the LED OFF

      if(readString.indexOf("l7=1") > 0) {//lets check if LED should be lighted
        //led has to be turned ON
        digitalWrite(l7, HIGH); // set the LED on

      }
      else{
        //led has to be turned OFF
        digitalWrite(l7, LOW); // set the LED OFF

        if(readString.indexOf("l6=1") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(l6, HIGH); // set the LED on

        }
        else{
          //led has to be turned OFF
          digitalWrite(l6, LOW); // set the LED OFF

          if(readString.indexOf("l5=1") > 0) {//lets check if LED should be lighted
            //led has to be turned ON
            digitalWrite(l5, HIGH); // set the LED on

          }
          else{
            //led has to be turned OFF
            digitalWrite(l5, LOW); // set the LED OFF

            if(readString.indexOf("l4=1") > 0) {//lets check if LED should be lighted
              //led has to be turned ON
              digitalWrite(l4, HIGH); // set the LED on

            }
            else{
              //led has to be turned OFF
              digitalWrite(l4, LOW); // set the LED OFF

              if(readString.indexOf("l3=1") > 0) {//lets check if LED should be lighted
                //led has to be turned ON
                digitalWrite(l3, HIGH); // set the LED on

              }
              else{
                //led has to be turned OFF
                digitalWrite(l3, LOW); // set the LED OFF

                if(readString.indexOf("l2=1") > 0) {//lets check if LED should be lighted
                  //led has to be turned ON
                  digitalWrite(l2, HIGH); // set the LED on

                }
                else{
                  //led has to be turned OFF
                  digitalWrite(l2, LOW); // set the LED OFF



                }

                    }
                    // now output HTML data starting with standart header
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println();
                    // inizializzo pagina (da togliere se uso ajax)
                    client.print("<html><head><title>ARDUINO Controllo Led via WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
                    //send first heading
                    client.println("<h1>LED CONTROL by internet connection</h1>");
                    client.println("<hr />");
                    client.println("<h1>LED control</h1>");
                    //address will look like http://192.168.1.110/?L=1 when submited
                    client.println("<form method=get name=LED><input type=checkbox name=l value=1>LED
<input type=checkbox name=l1 value=1>LED
<input type=checkbox name=l2 value=1>LED
<input type=checkbox name=l3 value=1>LED
<input type=checkbox name=l4 value=1>LED
<input type=submit value=submit></form>");
                    client.println("
");
                    //printing LED status
                    client.print("<span>LED status: </span>");





                    // chiudo pagina da togliere se uso ajax
                    client.println("</body></html>");

                    //clearing string for next read
                    readString="";
                    //stopping client
                    client.stop();

                  } 
                } // if client available
              } // while client connesso
            } // if client

          }
        } 
      } 
    } 
  } 
}

In questo momento non posso caricarlo per evidenziare l'errore, che errore ti da lo sketch?

Nessuno nel programma ...
Nel browser nemmeno , ma se io seleziono una checkbox e premo invio sull'url appare (/?l1=1) ma il led non si muove!

turipassaro:
ma se io seleziono una checkbox e premo invio sull'url appare (/?l1=1) ma il led non si muove!

A parte che non hai nessun controllo indexof con l1=1, parti da 2 fino a 9
mi sembra che ci siano un po troppi else, dopo lo guardo e ti dico qualcosa.

ciao

Grazie!

facciamo prima così, ti passo il mio che feci per prova un anno fa,
devi cambiare l'ip,
i numeri dei pin

Questo ne controlla solo 5, chiaramente aggiungi i 3 pin che ti mancano, fai copia e incolla con qualche modifica
Come potrai notare il sistema non cambia, si può ottimizzare con molte meno linee di codice, era uno dei primi esperimenti, per iniziare direi che va bene :roll_eyes:

#include <SPI.h>
#include <Ethernet.h> 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 177 };
EthernetServer server(80);
String readString;
byte out_1 = 40;
byte out_2 = 41;
byte out_3 = 42;
byte out_4 = 43;
byte out_5 = 44;

void setup()
{ 
  Ethernet.begin(mac, ip);
  pinMode(out_1, OUTPUT);
  pinMode(out_2, OUTPUT);
  pinMode(out_3, OUTPUT); 
  pinMode(out_4, OUTPUT);
  pinMode(out_5, OUTPUT);    
 // Serial.begin(9600);           
}
 
void loop(){
 
 EthernetClient  client = server.available();
 
  if (client) {
    boolean currentLineIsBlank = true;
   
    while (client.connected()) {
      if (client.available()) { 
        char c = client.read();
        readString.concat(c);   
        if (c == '\n' && currentLineIsBlank) {
          //Serial.print(readString);
               
        if(readString.indexOf("on_1") > 0) digitalWrite(out_1, HIGH);        
        if(readString.indexOf("off_1") > 0) digitalWrite(out_1, LOW);          
        if(readString.indexOf("on_2") > 0) digitalWrite(out_2, HIGH);        
        if(readString.indexOf("off_2") > 0) digitalWrite(out_2, LOW);          
        if(readString.indexOf("on_3") > 0) digitalWrite(out_3, HIGH);        
        if(readString.indexOf("off_3") > 0) digitalWrite(out_3, LOW); 
        if(readString.indexOf("on_4") > 0) digitalWrite(out_4, HIGH);        
        if(readString.indexOf("off_4") > 0) digitalWrite(out_4, LOW);
        if(readString.indexOf("on_5") > 0) digitalWrite(out_5, HIGH);        
        if(readString.indexOf("off_5") > 0) digitalWrite(out_5, LOW);
         
        //  PAGINA HTML      
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        client.print("<html><head><title>ARDUINO Controllo WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
        client.print("

");
       
        client.print("<span>STATO LUCE 1 </span>");
        if (digitalRead(out_1)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");   
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_1'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_1'\">");                   
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 2 </span>");       
        if (digitalRead(out_2)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");       
        client.print("<p><p/>"); 
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_2'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_2'\">");
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 3 </span>");
        if (digitalRead(out_3)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_3'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_3'\">");        
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 4 </span>");
        if (digitalRead(out_4)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_4'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_4'\">");        
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 5 </span>");
        if (digitalRead(out_5)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_5'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_5'\">");
        client.println("</body></html>");
         
        readString="";
        
        delay(1);
        client.flush();
        client.stop(); 
        }
      }
    }
  }
}

ciao

Scusa se ancora ti disturbo ma se inserisco un altro led non mi funziona !!! (dove ho sbagliato???)

#include <SPI.h>
#include <Ethernet.h> 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 123 };
EthernetServer server(80);
String readString;
byte out_1 = 2;
byte out_2 = 3;
byte out_3 = 4;
byte out_4 = 5;
byte out_5 = 6;
byte out_6 = 7;

void setup()
{ 
  Ethernet.begin(mac, ip);
  pinMode(out_1, OUTPUT);
  pinMode(out_2, OUTPUT);
  pinMode(out_3, OUTPUT); 
  pinMode(out_4, OUTPUT);
  pinMode(out_5, OUTPUT);   
  pinMode(out_6, OUTPUT); 
 // Serial.begin(9600);           
}
 
void loop(){
 
 EthernetClient  client = server.available();
 
  if (client) {
    boolean currentLineIsBlank = true;
   
    while (client.connected()) {
      if (client.available()) { 
        char c = client.read();
        readString.concat(c);   
        if (c == '\n' && currentLineIsBlank) {
          //Serial.print(readString);
               
        if(readString.indexOf("on_1") > 0) digitalWrite(out_1, HIGH);        
        if(readString.indexOf("off_1") > 0) digitalWrite(out_1, LOW);          
        if(readString.indexOf("on_2") > 0) digitalWrite(out_2, HIGH);        
        if(readString.indexOf("off_2") > 0) digitalWrite(out_2, LOW);          
        if(readString.indexOf("on_3") > 0) digitalWrite(out_3, HIGH);        
        if(readString.indexOf("off_3") > 0) digitalWrite(out_3, LOW); 
        if(readString.indexOf("on_4") > 0) digitalWrite(out_4, HIGH);        
        if(readString.indexOf("off_4") > 0) digitalWrite(out_4, LOW);
        if(readString.indexOf("on_5") > 0) digitalWrite(out_5, HIGH);        
        if(readString.indexOf("off_5") > 0) digitalWrite(out_5, LOW);
        if(readString.indexOf("on_6") > 0) digitalWrite(out_6, HIGH);        
        if(readString.indexOf("off_6") > 0) digitalWrite(out_6, LOW);
         
        //  PAGINA HTML      
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        client.print("<html><head><title>ARDUINO Controllo WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
        client.print("

");
       
        client.print("<span>STATO LUCE 1 </span>");
        if (digitalRead(out_1)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");   
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_1'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_1'\">");                   
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 2 </span>");       
        if (digitalRead(out_2)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");       
        client.print("<p><p/>"); 
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_2'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_2'\">");
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 3 </span>");
        if (digitalRead(out_3)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_3'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_3'\">");        
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 4 </span>");
        if (digitalRead(out_4)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_4'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_4'\">");        
        client.print("<p><p/>");
        
        client.print("<span>STATO LUCE 5 </span>");
        if (digitalRead(out_5)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_5'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_5'\">");
        client.println("</body></html>");
        
        client.print("<span>STATO LUCE 6 </span>");
        if (digitalRead(out_6)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
        else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
        client.print("<p><p/>");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"On\" onclick =\" location.href='/?on_6'\">");
        client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Off\" onclick =\" location.href='/?off_6'\">");
        client.println("</body></html>");
         
        readString="";
        
        delay(1);
        client.flush();
        client.stop(); 
        }
      }
    }
  }
}

perchè

 client.println("</body></html>");

chiude la pagina web e va in fondo, deve essere l'ultima riga dei client.print e tu ne hai una tra luce 5 e luce 6

Anche io ho fatto un lavoretto simile, se dovesse servirti il codice è questo

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


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] =  { 192,168,200,177 };

const int MAX_PAGENAME_LEN = 8; // max characters in page name 
char buffer[MAX_PAGENAME_LEN+1]; // additional character for terminating null

EthernetServer server(80);



void setup()
{
  
  Serial.begin(9600);
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  
 
  
  Ethernet.begin(mac, ip);
  server.begin();
  digitalWrite(10,HIGH);
  delay(2000);
}

void loop()
{
  EthernetClient client = server.available();
  if (client) 
  {
    int type = 0;
    while (client.connected()) 
     {
        if (client.available()) 
        {
        // GET, POST, or HEAD
         memset(buffer,0, sizeof(buffer)); // clear the buffer | scrive l'array con 0
         if(client.readBytesUntil('/',buffer,sizeof(buffer)))
         { 
          if(strcmp(buffer,"POST ") == 0)  //cerca la scritta post http://ruturajv.wordpress.com/2005/12/25/http-post-request/
          {
            client.find("\n\r"); // skip to the body
            // find string starting with "pin", stop on first blank line
            // the POST parameters expected in the form pinDx=Y
            // where x is the pin number and Y is 0 for LOW and 1 for HIGH
            while(client.findUntil("pinD", "\n\r")){
              int pin = client.parseInt();       // the pin number
              int val = client.parseInt();       // 0 or 1
              pinMode(pin, OUTPUT);
              digitalWrite(pin, val);
              
            }
          }
          sendHeader(client,"Domotica");
          //create HTML button to control pin 8
          client.println("<h2>Controllo Pin Digitali</h2>");
          client.println("<table border='1' >");
          for(int i=2;i<=3;i++)
           {
            client.print("<tr><td>digital pin ");
            client.print(i);
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.println(" value='0'><input type='submit' value='Off'/></form>");
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.print(" value='1'><input type='submit' value='On'/></form>");
            client.print(" </td><td>stato: ");
            if(digitalRead(i)==1)
               client.print("ON");
             else
               client.print("OFF");
            client.println("</td></tr>");
            }
          
          for(int i=5;i<10;i++)
           {
            client.print("<tr><td>digital pin ");
            client.print(i);
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.println(" value='0'><input type='submit' value='Off'/></form>");
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.print(" value='1'><input type='submit' value='On'/></form>");
            client.print(" </td><td>stato: ");
            if(digitalRead(i)==1)
               client.print("ON");
             else
               client.print("OFF");
            client.println("</td></tr>");
            }
          
          
          client.println("</table>");
          client.println("</body></html>");
          client.stop();
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    client.stop();
  }
}

void sendHeader(EthernetClient client, char *title)
{
  // send a standard http response header
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println();
  client.print("<html><head><title>");
  client.print(title);
  client.println("</title><body>");
}

Scusa pablos ma se io ,come dici tu, faccio copia e incolla con il tuo codice superati i 6 pin non mi funziona!! :~

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 
  192, 168, 1, 123 };
EthernetServer server(80);
String readString;

void setup()
{ 
  Ethernet.begin(mac, ip);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT); 
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT); 
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);    
  pinMode(9, OUTPUT);
}

void loop(){

  EthernetClient  client = server.available();

  if (client) {
    boolean currentLineIsBlank = true;

    while (client.connected()) {
      if (client.available()) { 
        char c = client.read();
        readString.concat(c);   
        if (c == '\n' && currentLineIsBlank) {

          if(readString.indexOf("on_1") > 0) digitalWrite(2, HIGH);        
          if(readString.indexOf("off_1") > 0) digitalWrite(2, LOW);          
          if(readString.indexOf("on_2") > 0) digitalWrite(3, HIGH);        
          if(readString.indexOf("off_2") > 0) digitalWrite(3, LOW);          
          if(readString.indexOf("on_3") > 0) digitalWrite(4, HIGH);        
          if(readString.indexOf("off_3") > 0) digitalWrite(4, LOW); 
          if(readString.indexOf("on_4") > 0) digitalWrite(5, HIGH);        
          if(readString.indexOf("off_4") > 0) digitalWrite(5, LOW);
          if(readString.indexOf("on_5") > 0) digitalWrite(6, HIGH);        
          if(readString.indexOf("off_5") > 0) digitalWrite(6, LOW);
          if(readString.indexOf("on_6") > 0) digitalWrite(7, HIGH);        
          if(readString.indexOf("off_6") > 0) digitalWrite(7, LOW);
          if(readString.indexOf("on_7") > 0) digitalWrite(8, HIGH);        
          if(readString.indexOf("off_7") > 0) digitalWrite(8, LOW);
          if(readString.indexOf("on_8") > 0) digitalWrite(9, HIGH);        
          if(readString.indexOf("off_8") > 0) digitalWrite(9, LOW);

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.print("<html><head><title>ARDUINO Controllo WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
          client.print("

");

          client.print("<span>STATO PIN 2 </span>");
          if (digitalRead(2)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
          else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
          client.print("<p><p/>");   
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"On\" onclick =\" location.href='/?on_1'\">");
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"Off\" onclick =\" location.href='/?off_1'\">");                   
          client.print("<p><p/>");
          
            client.print("<span>STATO PIN 3 </span>");
          if (digitalRead(3)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
          else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
          client.print("<p><p/>");   
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"On\" onclick =\" location.href='/?on_2'\">");
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"Off\" onclick =\" location.href='/?off_2'\">");                   
          client.print("<p><p/>");
          
            client.print("<span>STATO PIN 4 </span>");
          if (digitalRead(4)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
          else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
          client.print("<p><p/>");   
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"On\" onclick =\" location.href='/?on_3'\">");
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"Off\" onclick =\" location.href='/?off_3'\">");                   
          client.print("<p><p/>");
          
            client.print("<span>STATO PIN 5 </span>");
          if (digitalRead(5)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
          else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
          client.print("<p><p/>");   
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"On\" onclick =\" location.href='/?on_4'\">");
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"Off\" onclick =\" location.href='/?off_4'\">");                   
          client.print("<p><p/>");
          
        client.print("<span>STATO PIN 6 </span>");
          if (digitalRead(6)== true) client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"ON\" STYLE=\"background-color:#00FF00\"/>");  
          else client.print("<input disabled=\"disabled\" maxLength=\"50\" size=\"12\" value=\"OFF\" STYLE=\"background-color:#C0C0C0\"/>");
          client.print("<p><p/>");   
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"On\" onclick =\" location.href='/?on_5'\">");
          client.print("<input type=\"button\" style=\"width:50px; height:30px\" value=\"Off\" onclick =\" location.href='/?off_5'\">");                   
          client.print("<p><p/>");
         
         

          readString="";

  delay(1);
          client.flush();
          client.stop(); 
        }
      }
    }
  }
}

ti ho spiegato che
client.println("");
chiude la pagina web e va in fondo, deve essere l'ultima riga dei client.print e come vedo da quello che hai postato l'hai fatto sparire.

ciao scusate l'intromissione... mi è arrivata ieri l'ethernet shield, XD
per favore mi potete spiegare come gestisco da remoto i pin di uscita? cioè come faccio tramite un altro pc non nella lan casalinga a pilotare arduino?

Devi dire al router di aprire una porta all'arduino...
Es: se l'ip interno dell'arduino è 192.168.1.22 porta 80 devi impostare nella pagina di configurazione del router la porta 80..(vedi guide per emule e similari...)

Ti posto anche un codice che, prendendo spunto da pablos, ho creato per controllare a zone la mia casa.

#include <SPI.h>
#include <Ethernet.h> 
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 
  192, 168, 0, 199 };
  byte subnet[] = {
  255, 255, 255, 0 };
EthernetServer server(80);
String readString;
byte out_1 = 2;
byte out_2 = 3;
byte out_3 = 4;
byte out_4 = 5;
byte out_5 = 6;
byte out_6 = 7;
byte out_7 = 8;
byte out_8 = 9;
void setup()
{ 
  Ethernet.begin(mac, ip);
  pinMode(out_1, OUTPUT);
  pinMode(out_2, OUTPUT);
  pinMode(out_3, OUTPUT); 
  pinMode(out_4, OUTPUT);
  pinMode(out_5, OUTPUT); 
  pinMode(out_6, OUTPUT);
  pinMode(out_7, OUTPUT);  
  pinMode(out_8, OUTPUT);  

}

void loop(){

  EthernetClient  client = server.available();

  if (client) {
    boolean currentLineIsBlank = true;

    while (client.connected()) {
      if (client.available()) { 
        char c = client.read();
        readString.concat(c);   
        if (c == '\n' && currentLineIsBlank) {


          if(readString.indexOf("on_1") > 0) digitalWrite(out_1,   HIGH);        
          if(readString.indexOf("off_1") > 0) digitalWrite(out_1, LOW);          
          if(readString.indexOf("on_2") > 0) digitalWrite(out_2, HIGH);        
          if(readString.indexOf("off_2") > 0) digitalWrite(out_2, LOW);          
          if(readString.indexOf("on_3") > 0) digitalWrite(out_3, HIGH);        
          if(readString.indexOf("off_3") > 0) digitalWrite(out_3, LOW); 
          if(readString.indexOf("on_4") > 0) digitalWrite(out_4, HIGH);        
          if(readString.indexOf("off_4") > 0) digitalWrite(out_4, LOW);
          if(readString.indexOf("on_5") > 0) digitalWrite(out_5, HIGH);        
          if(readString.indexOf("off_5") > 0) digitalWrite(out_5, LOW);
          if(readString.indexOf("on_6") > 0) digitalWrite(out_6, HIGH);        
          if(readString.indexOf("off_6") > 0) digitalWrite(out_6, LOW);
          if(readString.indexOf("on_7") > 0) digitalWrite(out_7, HIGH);        
          if(readString.indexOf("off_7") > 0) digitalWrite(out_7, LOW);
          if(readString.indexOf("on_8") > 0) digitalWrite(out_8, HIGH);        
          if(readString.indexOf("off_8") > 0) digitalWrite(out_8, LOW);

          //  PAGINA HTML      
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.print("<html><head><title>ARDUINO Controllo WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
          client.print("

");
          client.print("Controllo remoto casa Passaro (BY SaLvo)");
          client.print("<p>");


          client.print("
");
          if (digitalRead(2)== true) client.print("<a href=/?off_1><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_1><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 2 (prese notte)");
          client.print("
");
          if (digitalRead(3)== true) client.print("<a href=/?off_2><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_2><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 3 (prese giorno)");
          client.print("
");
          if (digitalRead(4)== true) client.print("<a href=/?off_3><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_3><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 4 (luce notte)");
          client.print("
");
          if (digitalRead(5)== true) client.print("<a href=/?off_4><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_4><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 5 (luce giorno)");
          client.print("
");
          if (digitalRead(6)== true) client.print("<a href=/?off_5><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_5><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 6 (acquario)");
          client.print("
");
          if (digitalRead(7)== true) client.print("<a href=/?off_6><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_6><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 7 (non assegnato)");
          client.print("
");
          if (digitalRead(8)== true) client.print("<a href=/?off_7><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_7><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 8 (non assegnato)");
          client.print("
");
          if (digitalRead(9)== true) client.print("<a href=/?off_8><img src=http://salvatore.passaro.info/data/on.png>");  
          else client.print("<a href=/?on_8><img src=http://salvatore.passaro.info/data/off.png>");
          client.print("<--Pin 9 (non assegnato)");


          client.println("</body></html>");

          readString="";
          delay(5);

          client.flush();
          client.stop(); 
        }
      }
    }
  }
}

ciao ragazzi, scusate prendo spunto da questo vecchio thread per chiedere un chiarimento,
ho provato a modificare il codice per avere un tasto che mi bypassi il controllo digitale, ma logicamente
il ciclo di loop (credo) mi resetta l'accensione del led...posto il codice:

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] =  { 192,168,1,5 };

const int MAX_PAGENAME_LEN = 8; // max characters in page name 
char buffer[MAX_PAGENAME_LEN+1]; // additional character for terminating null

EthernetServer server(80);

[color=yellow][font=Verdana] #define ledPin 8 
 #define buttonPin 2 
int buttonState = 0;  [/font][/color]

void setup()
{
  [color=yellow] pinMode(ledPin, OUTPUT);
     pinMode(buttonPin, INPUT);[/color]
     
  Serial.begin(9600);
  
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  
 
  
  Ethernet.begin(mac, ip);
  server.begin();
  digitalWrite(10,HIGH);
  delay(2000);
}

void loop()
{ [color=yellow]buttonState = digitalRead(buttonPin);  
   
     if (buttonState == HIGH)
         digitalWrite(ledPin,HIGH);  
     else
         digitalWrite(ledPin,LOW);    [/color]                    
  EthernetClient client = server.available();
  if (client) 
  {
    int type = 0;
    while (client.connected()) 
     {
        if (client.available()) 
        {
        // GET, POST, or HEAD
         memset(buffer,0, sizeof(buffer)); // clear the buffer | scrive l'array con 0
         if(client.readBytesUntil('/',buffer,sizeof(buffer)))
         { 
          if(strcmp(buffer,"POST ") == 0)  //cerca la scritta post http://ruturajv.wordpress.com/2005/12/25/http-post-request/
          {
            client.find("\n\r"); // skip to the body
            // find string starting with "pin", stop on first blank line
            // the POST parameters expected in the form pinDx=Y
            // where x is the pin number and Y is 0 for LOW and 1 for HIGH
            while(client.findUntil("pinD", "\n\r")){
              int pin = client.parseInt();       // the pin number
              int val = client.parseInt();       // 0 or 1
              pinMode(pin, OUTPUT);
              digitalWrite(pin, val);
              
            }
          }
          sendHeader(client,"Domotica");
          //create HTML button to control pin 8
          client.println("<h2>Controllo Pin Digitali</h2>");
          client.println("<table border='1' >");
          for(int i=2;i<=3;i++)
           {
            client.print("<tr><td>digital pin ");
            client.print(i);
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.println(" value='0'><input type='submit' value='Off'/></form>");
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.print(" value='1'><input type='submit' value='On'/></form>");
            client.print(" </td><td>stato: ");
            if(digitalRead(i)==1)
               client.print("ON");
             else
               client.print("OFF");
            client.println("</td></tr>");
            }
          
          for(int i=5;i<10;i++)
           {
            client.print("<tr><td>digital pin ");
            client.print(i);
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.println(" value='0'><input type='submit' value='Off'/></form>");
            client.print(" </td><td>");
            client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
            client.print(i);
            client.print("'");
            client.print(" value='1'><input type='submit' value='On'/></form>");
            client.print(" </td><td>stato: ");
            if(digitalRead(i)==1)
               client.print("ON");
             else
               client.print("OFF");
            client.println("</td></tr>");
            }
          
          
          client.println("</table>");
          client.println("</body></html>");
          client.stop();
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    client.stop();
  }
}

void sendHeader(EthernetClient client, char *title)
{
  // send a standard http response header
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println();
  client.print("<html><head><title>");
  client.print(title);
  client.println("</title><body>");
}

in giallo ho evidenziato il codice aggiuntivo.
p.s.
ma se volessi aggiungere un sensore di temperatura come potrei conciliare il codice con questo?
grazie a tutti