Leggere stringa Arduino Ethernet Shield

Ciao ragazzi.
Ho il seguente problema e spero possiate darmi una mano perchè non ci sto capendo molto.
Lo scopo è recuperare una stringa dai dati che ricevo attraverso ulr, di seguito il codice che ho scritto vedendo degli esempi online, ma purtroppo non riesco a risolvere il problema.

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

boolean reading = false;

byte mac[] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX }; //indirizzo mac
//byte ip[] = { XXX, XXX, XXX, XXX }; //eventuale indirizzo ip

EthernetServer server = EthernetServer(80);
String readString = String(100);

void setup(){
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  
  Ethernet.begin(mac);
  server.begin();
  Serial.println(Ethernet.localIP());
  }
  
void loop(){
  checkForClient();
  }
  

void checkForClient(){
  
  EthernetClient client = server.available();
  
  if(client){
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;
    
    while (client.connected()){
      if (client.available()){
        
        if(!sentHeader){
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
          }
        
        char c = client.read();
        
        if (readString.length() < 100) {
          //store characters to string
          readString.concat(c);
          }
          
        if(reading && c == ' ') reading = false;
        
        if(c == '

In sostanza vorrei scrivere un url del tipo:
-> indirizzo_ip/led1=0 (e spengo il led),
-> indirizzo_ip/led1=1 (e accendo il led),
nel codice stavo provando leggendo il simbolo $, ma con scarsi risultati...

Vi ringrazio in anticipo per l'aiuto.) reading = true;
     
        if(reading){
          if(c == readString.indexOf("led1=0")) {
            Serial.println("Spegni led1");
            }
          else if(c == readString.indexOf("led1=1")) {
            Serial.println("Accendi led1");
            }
          else if(c == readString.indexOf("led2=0")){
            Serial.println("Spegni led2");
            }
          else if(c == readString.indexOf("led2=1")){
            Serial.println("Accendi led2");
            }
         
          }

if (c == '\n' && currentLineIsBlank)  break;

if (c == '\n') {
          currentLineIsBlank = true;
          }
          else if (c != '\r') {
            currentLineIsBlank = false;
            }
           
        //Termine if
        }
       
      //termine while
      }
   
    delay(1); // give the web browser time to receive the data
    client.stop(); // close the connection: 
    //termine if(client)
    }
   
  //termine function
  }


In sostanza vorrei scrivere un url del tipo:
-> indirizzo_ip/led1=0 (e spengo il led),
-> indirizzo_ip/led1=1 (e accendo il led),
nel codice stavo provando leggendo il simbolo $, ma con scarsi risultati...

Vi ringrazio in anticipo per l'aiuto.
if(c == readString.indexOf("led1=0")) {
else if(c == readString.indexOf("led1=1")) {
 else if(c == readString.indexOf("led2=0")){
else if(c == readString.indexOf("led2=1")){

Queste condizioni non saranno mai vere, stai confrontando c che è un char contenente un solo carattere con una funzione che restituisce
-1 se la stringa cercata non esiste
(pos n) se la stringa cercata esiste

leggo un carattere alla volta proveniente dal client

char c = client.read();

appendo ogni carattere c in una var stringa che si chiama readString

readString.concat(c);

se trovo in char c il simbolo "a capo" chiudi la stringa

 if (c == '\n'

readString è la stringa che devi analizzare non la variab char c, questa contiene il messaggio completo dove potrai trovare LED1....

Riguarda meglio gli esempi non troverai un controllo sulla variabile C per trovare il messaggio completo e riguarda bene cosa fa la funzione indexOf()
ciao

Grazie pablos, hai perfettamente ragione, infatti stavo facendo una cavolata enorme.
Adesso ho corretto il codice anche se continuo ad avere problemi nella visualizzazione della variabile.

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

byte mac[] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX };
/*
byte ip[] = { 192, 168, 1, 102 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
*/
EthernetServer server = EthernetServer(80);
String readstring = String(100);
String teststring = String(100);
String finalstring = String(100);

void setup(){
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  
  Ethernet.begin(mac);
  server.begin();
  Serial.println(Ethernet.localIP());
  }

void loop(){

  EthernetClient client = server.available();
  
  if(client){
    while(client.connected()){
      if(client.available()){
        char c = client.read();

        if(readstring.length() < 100){
          readstring += c; 
          } 
          
        if (c == '\n') {
          
          //Serial.println(readstring);
          
          if(readstring.indexOf("led1=")){ 
            Serial.println(readstring);          
            int val = readstring.indexOf("led1=");            
            finalstring = readstring.substring(val+1,val+2);
            Serial.println(finalstring);
            if(finalstring == "0"){
              Serial.println("Spegni Led1");
              }
              else if(finalstring == "1"){
                Serial.println("Accendi Led1");  
                }
            }
            
          else if(readstring.indexOf("led2=")){ 
            Serial.println(readstring);            
            int val = readstring.indexOf("led2=");            
            finalstring = readstring.substring(val+1,val+2);
            Serial.println(finalstring);
            if(finalstring == "0"){
              Serial.println("Spegni Led2");
              }
              else if(finalstring == "1"){
                Serial.println("Accendi Led2");  
                }
                
            }
        
        client.println("HTTP/1.1");
        client.println();
        client.println();
        delay(1);
        client.stop();

        readstring="";
        teststring="";
        finalstring="";
  
        }
      }
    }
  }
}

Non riesco a switchare tra led1 e led2.
Ma poi è possibile che per recuperare la variabile devo fare tutti questi giochi sulla stringa??

Ma poi è possibile che per recuperare la variabile devo fare tutti questi giochi sulla stringa??

Si, dipende da come hai pensato il programma. Sta a te inventarti un sistema, una funzione, una chiave univoca per leggere le stringhe....

Vuoi mandare tramite get un ordine on-off di un pin qualunque?
perchè non mandargli un numero e basta invece di tante parole inutili?

i pin commutabili di arduino 328 o 2560 superano i 99 pin? ... no .... quindi usiamo 2 caratteri da 00 a 99
il comando on/off può superare 1 carattere se usiamo 1 o 0? ..... no .... quindi usiamo un solo carattere

adesso possiamo costruire una funzione universale per qualsiasi pin che non vada oltre i 99 pin

004 scomposto diciamo al pin 4 di andare low 0-04
104 scomposto diciamo al pin 4 di andare high 1-04
010 scomposto diciamo al pin 10 di andare low 0-10
110 scomposto diciamo al pin 10 di andare high 1-10
053 scomposto diciamo al pin 53 di andare low 0-53
153 scomposto diciamo al pin 53 di andare high 1-53

ora passando il valore string della get (3 caratteri) a una funzione che scompone gli elementi secondo un criterio prestabilito e li converte in byte ..... con 5-6 righe di codice hai una funzione universale

string 110 ...dopo le conversioni... b=1 e a=10
es: digitalWrite(a,b);

oppure lo fai con i registri, invii un numero da 000 a 255 e piloti 8 pin con un byte solo

ciao

Bella soluzione, non ci avevo proprio pensato.

La questione è che ricevo sempre una stringa in get che devo scomporre per ottenere il valore 004, 104, ecc...
Cioè "indirizzoIp/?led=104", in questo modo gli dico "accendi il led sul pin 04" ma devo recuperare comunque la stringa "led=" (questo perchè potrei utilizzare altro oltre al led) e recuperare 104. Questi recuperi bisogna necessariamente farli scomponendo la stringa?

//indirizzoIp/?led=104

if(readstring.length() < 100){
  readstring += c; 
  } 

if(readstring.indexOf("led=")){ 
  Serial.println(readstring);          
  int val = readstring.indexOf("led1=");            
  finalstring = readstring.substring(.....);
  Serial.println(finalstring);
  }

E' il metodo corretto per trovare la stringa "led=" ed in seguito percuperare il valore 104?

Ti ringrazio pablos.

Posso accodarmi con una domanda ?

Ho un problema relativo a questo argomento, ho dei pulsanti sulla mia pagina a cui sono assegnate delle funzioni (es: accendo un relè,muovo un servo) il problema è che una volta premuto il pulsante rimane il get diciamo nell'indirizzo

www.paginadiprova.com <-- questo quando avvio la mia pagina, quando premo un pulsante la pagina rimane tipo ferma a
www.paginadiprova.com/pulsantepremuto
così se per qualche motivo devo aggioranre la pagina, rimane in memoria e quindi mi altera lo stato.

Ho fatto alcune prove ma non ne sono venuto a capo

Ciao Federico0, ma da quel che capisco la questione è legata più alle pagine htm che ad arduino stesso o sbaglio?
Cioè premendo il relativo pulsante, presente nella pagina web, non effettua il refresh e quindi non modifica l'url.
Di conseguenza arduino legge sempre la stessa stringa url
E' questo il problema?

La pensata di pablos invece è questa (e a me sembra giusto, devo solo implementare)

hai il tuo url: indirizzoIp/index.htm
se clicco sul pulsante "Accendi led1" allora passo la variabile 102 (per esempio)
l'url diventa -> indirizzoIp/index.htm/?102

Ricavo tramite Arduino la stringa 102 e la scompatto in due parti.
La prima parte (che può essere solo 0 o 1) mi dice di spegni/accendi il led/relè.
La seconda parte (in questo caso 02) mi dice il pin di riferimento, quindi ho un led/relè in uscita al pin 2 a cui sto dicendo "Accenditi".

se clicco sul pulsante "Spegni led3" allora passo alla mia pagina la variabile 003 (per esempio)
l'url diventa -> indirizzoIp/index.htm/?003

Ricavo tramite Arduino la stringa 003 e la scompatto in due parti.
La prima parte mi dice spegni il led/relè.
La seconda parte (in questo caso 03) mi dice il pin di riferimento, quindi ho un led/relè in uscita al pin 3 a cui sto dicendo "spegniti".

Se devi attivere il Servo fai la stessa cosa,
l'url diventa -> indirizzoIp/index.htm/?108
Stai attivando (1) il pin 08 dove magari hai il tuo servo...

Adesso il problema sta nel momento in cui mi vuoi magari dire "Muovi il servo verso destra di 30°",
dove magari dovresti passare un url del tipo: ->indirizzoIp/index.htm/?108&des=30
e qui bisognerebbe ricavare il carattere & e quindi des (o sin) ed in seguito "30"...

Ok, seguendo il consiglio di pablos sono riuscito a realizzare il codice per leggere la stringa url, suddividerla e accendere/spegnere gli n led...

// Vins 24-05-2013

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

byte mac[] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX };
/*
byte ip[] = { 192, 168, 0, 110 };
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
*/
EthernetServer server(80);

int ledPin2 = 2;  // LED pin2
int ledPin3 = 3;  // LED pin3
int ledPin5 = 5;  // LED pin5

String readString = String(30);
String elaboraString = String(30);
String fineString = String(30);
String onoff;
String pin;
int numPin;
int val;
char carray[3];

/*
URL DI ESEMPIO - LED SUI PIN 2,3,5

indirizzoIp/?LED=102 (Accende Led sul pin 2)
indirizzoIp/?LED=002 (Spegne Led sul pin 2)

indirizzoIp/?LED=103 (Accende Led sul pin 3)
indirizzoIp/?LED=003 (Spegne Led sul pin 3)

indirizzoIp/?LED=105 (Accende Led sul pin 5)
indirizzoIp/?LED=005 (Spegne Led sul pin 5)
*/

void setup(){
  //DHCP
  Ethernet.begin(mac);
  Serial.begin(9600);
  
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin5, OUTPUT);

  Serial.println(Ethernet.localIP());
  }

void loop(){

  EthernetClient client = server.available();
  if (client) {
  while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       
       if(readString.length() < 100){
         readString += c;
         }

       Serial.print(c);

       if (c == '\n') {
         if (readString.indexOf("?LED=") <0){
           //Niente
           }
            else{
              
              int val = readString.indexOf("?LED=");
              elaboraString = readString.substring(val+5,val+8);
              
              onoff = elaboraString.substring(0,1);
              pin = elaboraString.substring(1,3);
              
              //Serve per modificare la stringa pin in un intero
              pin.toCharArray(carray, sizeof(carray));
              numPin = atoi(carray); 
              
              if(onoff == "0"){
                digitalWrite(numPin, LOW);
                }
                 else if(onoff == "1"){
                   digitalWrite(numPin, HIGH);
                   }
                   
                }
                  
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          readString="";
          client.stop();
          }
        }
      }
    }
 }

Ovviamente sono a disposizione per qualsiasi miglioramento del codice.
Il prossimo passo sarà leggere le pagine htm da micro SD (quindi creare una pagina web) e attraverso tasti comandare arduino.

Ultima modifica della giornata e poi basta!
Creazione della pagina htm su micro sd della shield e accensione/spegnimento led da tasti.

Codice Arduino (con lettura dalla sd)

/*
Vins
24-05-2013
*/

#include <SPI.h>
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
#include <SD.h>

byte mac[] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX };
/*
byte ip[] = { 192, 168, 0, 110 };
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
*/
EthernetServer server(80);

int ledPin2 = 2;  // LED pin2
int ledPin3 = 3;  // LED pin3
int ledPin5 = 5;  // LED pin5

String readString = String(30);
String elaboraString = String(30);
String fineString = String(30);
String onoff;
String pin;
int numPin;
int val;
char carray[3];

File webFile;
boolean incoming = 0;

/*
URL DI ESEMPIO - LED SUI PIN 2,3,5

indirizzoIp/?LED=102 (Accende Led sul pin 2)
indirizzoIp/?LED=002 (Spegne Led sul pin 2)

indirizzoIp/?LED=103 (Accende Led sul pin 3)
indirizzoIp/?LED=003 (Spegne Led sul pin 3)

indirizzoIp/?LED=105 (Accende Led sul pin 5)
indirizzoIp/?LED=005 (Spegne Led sul pin 5)
*/

void setup(){
  //DHCP
  Ethernet.begin(mac);
  Serial.begin(9600);
  
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  
  // initialize SD card
  Serial.println("Initializing SD card...");
  if (!SD.begin(4)) {
    Serial.println("ERROR - SD card initialization failed!");
    return;    // init failed
    }
  Serial.println("SUCCESS - SD card initialized.");
  // check for index.htm file
  if (!SD.exists("index.htm")) {
    Serial.println("ERROR - Can't find index.htm file!");
    return;  // can't find index file
    }
  Serial.println("SUCCESS - Found index.htm file.");

  Serial.println(Ethernet.localIP());
  }

void loop(){

  EthernetClient client = server.available();
  if (client) {
  while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       
       if(readString.length() < 100){
         readString += c;
         }

       Serial.print(c);

       if (c == '\n') {
         
         // send web page
         webFile = SD.open("index.htm");        // open web page file

         if (webFile) {
           while(webFile.available()) {
             client.write(webFile.read()); // send web page to client
             }
         webFile.close();
         }
         
         if (readString.indexOf("?LED=") <0){
           //Niente
           }
            else{
              
              int val = readString.indexOf("?LED=");
              elaboraString = readString.substring(val+5,val+8);
              
              onoff = elaboraString.substring(0,1);
              pin = elaboraString.substring(1,3);
              
              //Serve per modificare la stringa pin in un intero
              pin.toCharArray(carray, sizeof(carray));
              numPin = atoi(carray); 
              
              if(onoff == "0"){
                digitalWrite(numPin, LOW);
                }
                 else if(onoff == "1"){
                   digitalWrite(numPin, HIGH);
                   }
                   
                }
                  
          /*
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          */
          readString="";
          client.stop();
          }
        }
      }
    }
 }

Codice paginetta htm (con jquery)

<!DOCTYPE html>
<html>
    <head>
        <title>Vins - ArduinoLed</title>
        
        <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" type="text/css" media="all" /> 
	<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.min.js" type="text/javascript"></script>
	<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js" type="text/javascript"></script>
        
	</head>
    
        <script type="text/javascript">
	$(function(){
		$("#led2on").button().click(function(){
			alert("Acceso led PIN2");
			$(location).attr("href","?LED=102");
		});

		$("#led2off").button().click(function(){
			alert("Spento led PIN2");
			$(location).attr("href","?LED=002");
		});
	
		$("#led3on").button().click(function(){
			alert("Acceso led PIN3");
			$(location).attr("href","?LED=103");
		});

		$("#led3off").button().click(function(){
			alert("Spento led PIN2");
			$(location).attr("href","?LED=003");
		});
	
		$("#led5on").button().click(function(){
			alert("Acceso led PIN5");
			$(location).attr("href","?LED=105");
		});

		$("#led5off").button().click(function(){
			alert("Spento led PIN5");
			$(location).attr("href","?LED=005");
		});

	});
	</script>
    
	<style type="text/css">
	*{
		margin:0px;
		padding:0px;
		}

	body{
		background-color: #CCC;
		}

	h1{
		font-family: Verdana, Geneva, sans-serif;
		font-size: 1.8em;
		color: #FFF;
		margin: 20px;
		}

	.led{
		width:80%;
		margin-left:auto;
		margin-right:auto;
		background-color: #FFF;
		padding: 10px;
		margin-bottom: 30px;
		-webkit-border-radius: 5px;
		-moz-border-radius: 5px;
		border-radius: 5px;
		-webkit-box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.36);
		-moz-box-shadow:    0px 0px 5px rgba(50, 50, 50, 0.36);
		box-shadow:         0px 0px 5px rgba(50, 50, 50, 0.36);
		}

	.led h2{
		font-family: Verdana, Geneva, sans-serif;
		font-size:1.0em;
		color: #000;
		margin: 5px;
		margin-bottom: 10px;
		}
	</style>
	
    <body>
    	<h1>Comandi on/off led</h1>
        
		<div class="led" id="led2">
			<h2>Comando led2 (pin2)</h2>
			<button class="led2on" id="led2on">Accendi Led</button>
			<button class="led2off" id="led2off">Spegni Led</button>
		</div>
        
        <div class="led" id="led3">
			<h2>Comando led3 (pin3)</h2>
			<button class="led3on" id="led3on">Accendi Led</button>
			<button class="led3off" id="led3off">Spegni Led</button>
		</div>
        
        <div class="led" id="led5">
			<h2>Comando led5 (pin5)</h2>
			<button class="led5on" id="led5on">Accendi Led</button>
			<button class="led5off" id="led5off">Spegni Led</button>
		</div>
        
    </body>
</html>

Per qualsiasi correzione o miglioramento del codice, sono sempre a disposizione.

Ciao constructor84...ho appena provato a caricare gli ultimi 2 sketch che hai pubblicato e sinceramente non sò dove sbaglio ma mi funzionano male...

Il primo è solamente lo sketch senza microsd e ad ogni comando mi si muovono le uscite ma non ho nessun riscontro su pagina web---
Il secondo sketch invece dopo aver caricato la paginetta index.htm con browser google non funge mentre con firefox è OK...

Mi chiedevo come si possa migliorare la pagina web per farla funzionare anche con google e per avere un riscontro del led veramente acceso se si poteva colorare il button appena premuto e lasciarlo colorato in maniera tale che se si ricarica la pagina dopo un pò si possa capire lo stato dei led in base al colore dei button...
Spero di essere stato chiaro nella spiegazione e grazie per la comprensione :stuck_out_tongue: :stuck_out_tongue: :P...
Per il problema di google è strano perchè in off-line aprendo la pagina index.htm con chrome mi funge...bah...

Ciao Pietro78,

io utilizzo firefox, ma provando con chrome non visualizzo la pagina... il che è decisamente strano...
Per il miglioramento della pagina non ci sono problemi, quella è una prima bozza, col tempo la migliorerò di certo, con tasti, sfondi ecc...

Adesso però la questione è la seguente, vorrei eliminare la sd e creare un applicazione web in php.
Ma come "collego" arduino alla mia pagina web in locale?

Mi spiego meglio, creo l'app web in php/mysql in locale (usando wamp), lanciando arduino ho un indirizzo ip (es. 192.168.1.200) che dovrebbe "collegarsi" alla mia app web giusto? Cioè solitamente quando programmo in locale creo dei virtual host usando l'indirizzo di loopback (127.0.0.1) a cui associo un nome server che inserisco in seguito nel file hosts e visualizzo la mia app web attraverso quel nome (inserito nell'url)...

Probabilmente sarà una cosa stupida alla quale non ci arrivo, spero!

Quello che devo creare è un db, ricevere dati da arduino, inserirli nel db e visualizzare tali dati nella pagina web.

In effetti potresti avere ragione il problema potrebbe risiedere nell'HTML più che nello sketch.
Comunque ho appena provato il tuo sketch, con firefox visualizzo index.htm in chiaro diciamo (come se non fosse stato interpretato dal browser) mentre con explorer, sembra andare tutto bene

ciao
constructor84

ormai hai superato la cosa, ma un paio di giorni fa stavo cercando di passare dalla visualizzazione dati su pagina unica, a multipagina e quindi ricezione comandi.
Ho trovato uno sketch che ha funzionato subito senza problemi, con Chrome, Firefox, ecc.

Magari a te non serve, ma a me ha fatto comodo e potrebbe essere utile ad altri.
Ciao,
Dritan

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
byte ip[] = { 192, 168, 1, 3 }; // indirizzo IP della shield
EthernetServer server(80); 

int ledPin = 3; // LED pin
String readString; 
boolean LEDON = false; 

void setup(){
Ethernet.begin(mac, ip);
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); 
 
 if (c == '\n' && currentLineIsBlank) {
 
 Serial.print(readString);
 
 if(readString.indexOf("Led=1") > 0) {
 
 digitalWrite(ledPin, HIGH); 
 LEDON = true;
 }else{
 
 digitalWrite(ledPin, LOW); 
 LEDON = false;
 }
 
 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: text/html");
 client.println();
 client.print("<html><head><title>Sun</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
 if (LEDON) {
 client.println("<img src=http://img849.imageshack.us/img849/1513/accesao.jpg />");
 }
 else
 {
 client.println("<img src=http://img10.imageshack.us/img10/4719/spenta.jpg />");
 }
 client.print("<h2><a href='/?Led=1'>ACCENDI</a> | <a href='/?Led=0'>SPEGNI</a></h2>");
 client.println("</body></html>");
 readString="";
 client.stop();

 } 
 } 
 } 
} 
}

constructor84
Last Active: July 14, 2013, 12:17:49 pm
non penso ti risponderà :slight_smile: