Ciao, ho sperimentato un po' qua e la e, per me che di HTML so ben poco, ho preferito provare per la strada che mi aveva consigliato Guglielmo, ovvero utilizzando una flag.
Ora come ora sono arrivato a questo punto
parte dichiarazione
#include <Ethernet.h> //libreria ethernet
#include <SPI.h> //collabora con la libreria ethernet
#include <String.h> //gestione stringhe
byte flag = 0;
int tempo = 0;
int led = 0;
//dati Ethernet shield
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //indirisso fisico
EthernetServer server(80); //imposto porta protocollo HTTP
String ascoltatore1; //dichiarazione stringa
String ascoltatore2; //dichiarazione stringa
void setup
void setup() {
Serial.begin(9600);
//Ethernet shield
Ethernet.begin(mac); //inizializzazione
server.begin(); //avvio server
Serial.print("server is at ");
Serial.println(Ethernet.localIP()); //stampa indirizzo del server
}
void loop
void loop() {
EthernetClient client = server.available(); //attendo l'arrivo di un client
if (client) { //se c'è il cliente deve..
boolean currentLineIsBlank = true;
azioni();
while (client.connected()) {
if (client.available()) {
if (flag == 0) {
char c = client.read(); //..leggere i caratteri che invia
ascoltatore1.concat(c); //concatena i caratteri del client
if (c == '\n' && currentLineIsBlank) { //se arrivo a fine riga
if (ascoltatore1.indexOf("/?rosso") > 0) { //controllo che nell'url ci sia rosso
led = 1;
flag = 1;
Serial.println("flag");
Serial.println(flag);
Serial.println("led");
Serial.println(led);
}
else if (ascoltatore1.indexOf("/?verde") > 0) { //controllo che nell'url ci sia verde
led = 2;
flag = 1;
Serial.println("flag");
Serial.println(flag);
Serial.println("led");
Serial.println(led);
}
client.println("HTTP/1.1 200 OK"); //dico al client che è tutt'ok - standard http
client.println("Content-Type: text/html");//indico il formato - standard http
client.println("Connection: close");
client.print("<!DOCTYPE HTML>");
client.println(); //necessario per non buggare
client.println("<html>"); //inizio codice html
client.println("<head><title>GIGIO2.0</title> <link rel='shortcut icon' type='image/x-icon' href='http://i44.servimg.com/u/f44/16/84/89/65/23570310.png' /></head>");
client.println("<body><center><h1>GIGIO 2.0 </h1>");
client.println("<a href='/?rosso'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/avanti.gif\" width='200' height='150' ></a>");
client.println("<a href='/?verde'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/indietro.gif\" width='200' height='150' ></a>");
client.println("</body>");
client.println("</html>");
ascoltatore1 = "";
break;
}
if (c == '\n') {
//scrive una nuova riga
currentLineIsBlank = true;
}
else if (c != '\r') {
// riceve un carattere sulla linea
currentLineIsBlank = false;
}
}
else if (flag == 1) {
char d = client.read();
ascoltatore2.concat(d);
if (d == '\n' && currentLineIsBlank) { //se arrivo a fine riga
if (ascoltatore2.indexOf("/?10_sec") > 0) { //controllo che nell'url ci sia 10_sec
tempo = 1;
flag = 0;
Serial.print("flag");
Serial.print(flag);
Serial.print("led");
Serial.print(led);
}
else if (ascoltatore2.indexOf("/?5_sec") > 0) { //controllo che nell'url ci sia 5_sec
tempo = 2;
flag = 0;
Serial.print("flag");
Serial.print(flag);
Serial.print("led");
Serial.print(led);
}
else if (ascoltatore2.indexOf("/?15_sec") > 0) { //controllo che nell'url ci sia 15_sec
tempo = 3;
flag = 0;
Serial.print("flag");
Serial.print(flag);
Serial.print("led");
Serial.print(led);
}
else if (ascoltatore2.indexOf("/?7_sec") > 0) { //controllo che nell'url ci sia 7_sec
tempo = 4;
flag = 0;
Serial.print("flag");
Serial.print(flag);
Serial.print("led");
Serial.print(led);
}
client.println("HTTP/1.1 200 OK"); //dico al client che è tutt'ok - standard http
client.println("Content-Type: text/html");//indico il formato - standard http
client.println("Connection: close");
client.print("<!DOCTYPE HTML>");
client.println(); //necessario per non buggare
client.println("<html>"); //inizio codice html
client.println("<head><title>GIGIO2.0</title> <link rel='shortcut icon' type='image/x-icon' href='http://i44.servimg.com/u/f44/16/84/89/65/23570310.png' /></head>");
client.println("<body><center><h1>GIGIO 2.0 </h1>");
client.println("<a href='/?10_sec'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/ferma.jpg\" width='200' height='150' ></a>");
client.println("<a href='/?5_sec'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/destra.gif\" width='200' height='150' ></a>");
client.println("<a href='/?15_sec'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/sinistra.gif\" width='200' height='150' ></a>");
client.println("<a href='/?7_sec'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/automatica.gif\" width='200' height='150' ></a>");
client.println("</body>");
client.println("</html>");
ascoltatore2 = "";
break;
}
if (d == '\n') {
//scrive una nuova riga
currentLineIsBlank = true;
}
else if (d != '\r') {
// riceve un carattere sulla linea
currentLineIsBlank = false;
}
}
}
}
delay(10);
client.stop();
}
}
void azioni , che si trova subito sotto if (client) a inizio void loop
void azioni() {
if (led == 1 && tempo == 1) {
Serial.print("rosso per 10sec");
}
else if (led == 1 && tempo == 2) {
Serial.print("rosso per 5sec");
}
else if (led == 1 && tempo == 3) {
Serial.print("rosso per 15sec");
}
else if (led == 1 && tempo == 4) {
Serial.print("rosso per 7sec");
}
else if (led == 2 && tempo == 1) {
Serial.print("verde per 10sec");
}
else if (led == 2 && tempo == 2) {
Serial.print("verde per 5sec");
}
else if (led == 2 && tempo == 3) {
Serial.print("verde per 15sec");
}
else if (led == 2 && tempo == 4) {
Serial.print("verde per 7sec");
}
}
Ho creato il codice anche facendo un po di riferimento all'esempio WebServer della libreria Ethernet, ma ci sono degli errori lo stesso... dato che nemmeno mi apre la pagina quando inserisco l'indirizzo ip sul browser.
Non so dove sto sbagliando ![]()