Sono riuscito a fare il programma che mi serviva, l'unico intoppo e' che se dopo aver fatto la prima scelta, non riapro il web server su una nuova pagina web, ogni tanto mi da un problema di rallentamento.
Questo puo' essere dovuto al browser?
#include <Ethernet.h> //libreria ethernet
#include <SPI.h> //collabora con la libreria ethernet
#include <String.h> //gestione stringhe
int 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() {
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() {
if (flag == 0) {
EthernetClient client = server.available(); //attendo l'arrivo di un client
if (client) { //se c'è il cliente deve..
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
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.print(
"HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n"
"Connection: close\r\n" // la connessione viene chiusa dopo la risposta
"\r\n");
client.print("<!DOCTYPE HTML>\r\n");
client.println(); //necessario per non buggare
client.print("<html>\r\n");
client.println("<head>\r\n");
client.println("<title>\r\n");
client.println("DAMBOBOTS");
client.println("</title>\r\n");
client.println("<link rel='shortcut icon' type='image/x-icon' href='http://i44.servimg.com/u/f44/16/84/89/65/23570310.png' />");
client.println("</head>\r\n");
client.println("<body>\r\n");
client.println("<center>\r\n");
client.println("<h1>\r\n");
client.println("DAMBOBOTS ");
client.println("</h1>\r\n");
client.println("<a href='/?rosso'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/avanti.gif\" width='200' height='150' ></a>\r\n");
client.println("<a href='/?verde'><img src = \"http://gigiowifi.altervista.org/wp-content/uploads/2017/10/indietro.gif\" width='200' height='150' ></a>\r\n");
client.println("</body>\r\n");
client.println("</html>\r\n");
ascoltatore1 = "";
break;
}
if (c == '\n') {
//scrive una nuova riga
currentLineIsBlank = true;
}
else if (c != '\r') {
// riceve un carattere sulla linea
currentLineIsBlank = false;
}
}
}
delay(10);
client.stop();
}
}
if (flag == 1) {
EthernetClient client = server.available(); //attendo l'arrivo di un client
if (client) { //se c'è il cliente deve..
boolean currentLineIsBlank1 = true;
while (client.connected()) {
if (client.available()) {
char d = client.read();
ascoltatore2.concat(d);
if (d == '\n' && currentLineIsBlank1) { //se arrivo a fine riga
if (ascoltatore2.indexOf("/?10_sec") > 0) { //controllo che nell'url ci sia 10_sec
tempo = 1;
flag = 2;
Serial.println("flag");
Serial.println(flag);
Serial.println("tempo");
Serial.println(tempo);
}
else if (ascoltatore2.indexOf("/?5_sec") > 0) { //controllo che nell'url ci sia 5_sec
tempo = 2;
flag = 2;
Serial.println("flag");
Serial.println(flag);
Serial.println("tempo");
Serial.println(tempo);
}
else if (ascoltatore2.indexOf("/?15_sec") > 0) { //controllo che nell'url ci sia 15_sec
tempo = 3;
flag = 2;
Serial.println("flag");
Serial.println(flag);
Serial.println("tempo");
Serial.println(tempo);
}
else if (ascoltatore2.indexOf("/?7_sec") > 0) { //controllo che nell'url ci sia 7_sec
tempo = 4;
flag = 2;
Serial.println("flag");
Serial.println(flag);
Serial.println("tempo");
Serial.println(tempo);
}
client.print(
"HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n"
"Connection: close\r\n" // la connessione viene chiusa dopo la risposta
"\r\n");
client.print("<!DOCTYPE HTML>");
client.println(); //necessario per non buggare
client.print("<html>\r\n");
client.println("<head>\r\n");
client.println("<title>\r\n");
client.println("DAMBOBOTS");
client.println("</title>\r\n");
client.println("<link rel='shortcut icon' type='image/x-icon' href='http://i44.servimg.com/u/f44/16/84/89/65/23570310.png' />");
client.println("</head>\r\n");
client.println("<body>\r\n");
client.println("<center>\r\n");
client.println("<h1>\r\n");
client.println("DAMBOBOTS ");
client.println("</h1>\r\n");
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
currentLineIsBlank1 = true;
}
else if (d != '\r') {
// riceve un carattere sulla linea
currentLineIsBlank1 = false;
}
}
}
delay(10);
client.stop();
}
}
if (flag == 2) {
azioni();
}
}
void azioni() {
if (led == 1 && tempo == 1) {
Serial.println("rosso per 10sec");
}
else if (led == 1 && tempo == 2) {
Serial.println("rosso per 5sec");
}
else if (led == 1 && tempo == 3) {
Serial.println("rosso per 15sec");
}
else if (led == 1 && tempo == 4) {
Serial.println("rosso per 7sec");
}
else if (led == 2 && tempo == 1) {
Serial.println("verde per 10sec");
}
else if (led == 2 && tempo == 2) {
Serial.println("verde per 5sec");
}
else if (led == 2 && tempo == 3) {
Serial.println("verde per 15sec");
}
else if (led == 2 && tempo == 4) {
Serial.println("verde per 7sec");
}
}
Questo e' il programma funzionante.