#include #include byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Indirizzo fisico della scheda Ethernet byte ip[] = { 192,168,1, 89 }; //indirizzo IP della scheda Ethernet EthernetServer server(80); //Porta 80 per il traffico in HTML String query; byte i; //*******************************QUI VALORI CHE POSSONO ESSERE CAMBIATI DALL'UTENTE (ENTRO QUESTI ASTERISCHI)***************** String TITOLO = "COMANDO REMOTO ETHERNET By Fabio"; String RGB = "255, 204, 255"; //Colore di sfondo combinazione dei tre colori RGB byte PinUtenza1 = 2; //Pin per le utenze byte PinUtenza2 = 3; byte PinUtenza3 = 4; byte PinUtenza4 = 5; byte PinUtenza5 = 6; byte PinUtenza6 = 7; byte PinUtenza7 = 8; byte PinUtenza8 = 9; byte PinUtenza9 = 48; byte PinUtenza10 = 49; byte PinUtenza11 = 47; byte PinUtenza12 = 46; byte PinUtenza13 = 45; byte PinUtenza14 = 44; byte PinUtenza15 = 43; byte PinUtenza16 = 42; byte PinUtenza17 = 41; byte PinUtenza18 = 40; byte PinUtenza19 = 39; byte PinUtenza20 = 38; String U1 = "Utenza 01"; //Nomi per le utenze String U2 = "Utenza 02"; String U3 = "Utenza 03"; String U4 = "Utenza 04"; String U5 = "Utenza 05"; String U6 = "Utenza 06"; String U7 = "Utenza 07"; String U8 = "Utenza 08"; String U9 = "Utenza 09"; String U10 = "Utenza 10"; String U11 = "Utenza 11"; String U12 = "Utenza 12"; String U13 = "Utenza 13"; String U14 = "Utenza 14"; String U15 = "Utenza 15"; String U16 = "Utenza 16"; String U17 = "Utenza 17"; String U18 = "Utenza 18"; String U19 = "Utenza 19"; String U20 = "Utenza 20"; //****************************************************************************** String colore1 = "white"; String colore2 = "white"; String colore3 = "white"; String colore4 = "white"; String colore5 = "white"; String colore6 = "white"; String colore7 = "white"; String colore8 = "white"; String colore9 = "white"; String colore10 = "white"; String colore11 = "white"; String colore12 = "white"; String colore13 = "white"; String colore14 = "white"; String colore15 = "white"; String colore16 = "white"; String colore17 = "white"; String colore18 = "white"; String colore19 = "white"; String colore20 = "white"; void setup() { query = String(""); Ethernet.begin(mac, ip); //Inizializzazione Ethernet server.begin(); //Il server (Scheda Ethernet Arduino)si mette in ascolto pinMode(PinUtenza1,OUTPUT); pinMode(PinUtenza2,OUTPUT); pinMode(PinUtenza3,OUTPUT); pinMode(PinUtenza4,OUTPUT); pinMode(PinUtenza5,OUTPUT); pinMode(PinUtenza6,OUTPUT); pinMode(PinUtenza7,OUTPUT); pinMode(PinUtenza8,OUTPUT); pinMode(PinUtenza9,OUTPUT); pinMode(PinUtenza10,OUTPUT); pinMode(PinUtenza11,OUTPUT); pinMode(PinUtenza12,OUTPUT); pinMode(PinUtenza13,OUTPUT); pinMode(PinUtenza14,OUTPUT); pinMode(PinUtenza15,OUTPUT); pinMode(PinUtenza16,OUTPUT); pinMode(PinUtenza17,OUTPUT); pinMode(PinUtenza18,OUTPUT); pinMode(PinUtenza19,OUTPUT); pinMode(PinUtenza20,OUTPUT); } void loop() { EthernetClient client = server.available(); //server.available()restituisce "vero" se il client (browser sul nostro computer) invia messaggi, se no "falso" if (client) // Se è arrivato una richesta (GET / HTTP/1.1 GET /favicon.ico HTTP/1.1)dal client l'IF esegue il suo corpo, se no torna a void loop. { while (client.connected()) //Il client rimane connesso fino a quando non è stato spedito l'ultimo carattere { if (client.available()) //client.available restituisce il numero di byte da leggere (se no da 0); { char c = client.read(); //Legge un byte alla volta query.concat(c); //lo concatena in query if (c == '\n') // Fintanto non legge il carattere /n seguita la lettura. { client.println("HTTP/1.1 200 OK"); //Se è stato letto il carattere /n, il server (Ethernet Arduino) risponde con le seguenti tre istruzioni. client.println("Content-Type: text/html"); client.println(); //Il programma salta alla riga 381 se nessun tasto è stato premuto o se c'è stata richiesta iniziale da parte del browser //*********************************************** //Da qui seguenza di lettura dei tasti con toggle del pin e cambio del colore del tasto if (query.indexOf("utenza1") > 0) {if(colore1 == "white" ) { digitalWrite(PinUtenza1,HIGH); colore1 = "red"; } else { digitalWrite(PinUtenza1,LOW); colore1 = "white"; } } if (query.indexOf("utenza2") > 0) { if(colore2 == "white") { digitalWrite(PinUtenza2,HIGH); colore2 = "red"; } else { digitalWrite(PinUtenza2,LOW); colore2 = "white"; } } if (query.indexOf("utenza3") > 0) { if(colore3 == "white") { digitalWrite(PinUtenza3,HIGH); colore3 = "red"; } else { digitalWrite(PinUtenza3,LOW); colore3 = "white"; } } if (query.indexOf("utenza4") > 0) { if(colore4 == "white") { digitalWrite(PinUtenza4,HIGH); colore4 = "red"; } else { digitalWrite(PinUtenza4,LOW); colore4 = "white"; } } if (query.indexOf("utenza5") > 0) { if(colore5 == "white") { digitalWrite(PinUtenza5,HIGH); colore5 = "red"; } else { digitalWrite(PinUtenza5,LOW); colore5 = "white"; } } if (query.indexOf("utenza6") > 0) { if(colore6 == "white") { digitalWrite(PinUtenza6,HIGH); colore6 = "red"; } else { digitalWrite(PinUtenza6,LOW); colore6 = "white"; } } if (query.indexOf("utenza7") > 0) { if(colore7 == "white") { digitalWrite(PinUtenza7,HIGH); colore7 = "red"; } else { digitalWrite(PinUtenza7,LOW); colore7 = "white"; } } if (query.indexOf("utenza8") > 0) { if(colore8 == "white") { digitalWrite(PinUtenza8,HIGH); colore8 = "red"; } else { digitalWrite(PinUtenza8,LOW); colore8 = "white"; } } if (query.indexOf("utenza9") > 0) { if(colore9 == "white") { digitalWrite(PinUtenza9,HIGH); colore9 = "red"; } else { digitalWrite(PinUtenza9,LOW); colore9 = "white"; } } if (query.indexOf("10utenza") > 0) { if(colore10 == "white") { digitalWrite(PinUtenza10,HIGH); colore10 = "red"; } else { digitalWrite(PinUtenza10,LOW); colore10 = "white"; } } if (query.indexOf("11utenza") > 0) { if(colore11 == "white") { digitalWrite(PinUtenza11,HIGH); colore11 = "red"; } else { digitalWrite(PinUtenza11,LOW); colore11 = "white"; } } if (query.indexOf("12utenza") > 0) { if(colore12 == "white") { digitalWrite(PinUtenza12,HIGH); colore12 = "red"; } else { digitalWrite(PinUtenza12,LOW); colore12 = "white"; } } if (query.indexOf("13utenza") > 0) { if(colore13 == "white") { digitalWrite(PinUtenza13,HIGH); colore13 = "red"; } else { digitalWrite(PinUtenza13,LOW); colore13 = "white"; } } if (query.indexOf("14utenza") > 0) { if(colore14 == "white") { digitalWrite(PinUtenza14,HIGH); colore14 = "red"; } else { digitalWrite(PinUtenza14,LOW); colore14 = "white"; } } if (query.indexOf("15utenza") > 0) { if(colore15 == "white") { digitalWrite(PinUtenza15,HIGH); colore15 = "red"; } else { digitalWrite(PinUtenza15,LOW); colore15 = "white"; } } if (query.indexOf("16utenza") > 0) { if(colore16 == "white") { digitalWrite(PinUtenza16,HIGH); colore16 = "red"; } else { digitalWrite(PinUtenza16,LOW); colore16 = "white"; } } if (query.indexOf("17utenza") > 0) { if(colore17 == "white") { digitalWrite(PinUtenza17,HIGH); colore17 = "red"; } else { digitalWrite(PinUtenza17,LOW); colore17 = "white"; } } if (query.indexOf("18utenza") > 0) { if(colore18 == "white") { digitalWrite(PinUtenza18,HIGH); colore18 = "red"; } else { digitalWrite(PinUtenza18,LOW); colore18 = "white"; } } if (query.indexOf("19utenza") > 0) { if(colore19 == "white") { digitalWrite(PinUtenza19,HIGH); colore19 = "red"; } else { digitalWrite(PinUtenza19,LOW); colore19 = "white"; } } if (query.indexOf("20utenza") > 0) { if(colore20 == "white") { digitalWrite(PinUtenza20,HIGH); colore20 = "red"; } else { digitalWrite(PinUtenza20,LOW); colore20 = "white"; } } //Ivia la pagina con i tasti alla richiesta del browser, questo accade quando nella barra degli indirizzi si scrive l'IP di arduino. client.print("
"); for(i = 0 ; i < 6 ; ++i) client.print("                  "); client.print(TITOLO); client.print("


"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); for(i = 0 ; i < 7 ; ++i) client.print("                 "); client.print(""); client.print("      

"); //******************************************************************************* break;//Esce dal ciclo } } } delay(1); //Quando il Server ha risposto ad Arduino e stampato la pagina HTML nel browser resetta il processo e torna ad ascoltare client.stop(); query = String(""); } }