Questo codice preleva il valore dell'url tramite il metodo get e accende e spegne i led per il tempo indicato dalla variabile es. 197.168.1.177/?led=5.
Il 5 andrà a stabilire la durata di accensione e spegnimeto del led.
Il problema è che il codice viene eseguito due volte.
#include <SPI.h>
#include <Ethernet.h>
boolean reading = false;
boolean i=true;
#define led 7
// Setup the static network info for you arduino
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[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Address
int tempo=0;
EthernetServer server = EthernetServer(80); // Port 80
String HTTPget = "";
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(led, OUTPUT);
}
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();
break;
}
if (c == '\n')
{
lineIsBlank = true;
}
else if (c != '\r')
{
lineIsBlank = false;
}
}
}
if(i=true){
String var_1 = HTTPget.substring(4,6);
int tempo = var_1.toInt();
digitalWrite(led, HIGH); // accende il LED
Serial.println("Acceso");
delay(tempo*1000);
//delay(5000);
Serial.println("Spento");
digitalWrite(led, LOW); // spegne il LED
delay(tempo*1000);
//delay(5000);
Serial.println("Disconnesso");
i=false;
}
delay(1); // give the web browser a moment to recieve
client.stop(); // close connection
}
}
--- ti ricordo che, da regolamento, NON è permesso fare "up" (sollecitare risposte) se non dopo 48 ore dall'ultimo post. Grazie. - gpb01