in questo post vi mostrerò come comandare un led da una pagina web.
//ARDUINO 1.0+ ONLY
String readString;
#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
byte ip[] = { 192, 168, 1, 17 }; //Manual setup only
byte gateway[] = { 192, 168, 1, 1 }; //Manual setup only
byte subnet[] = { 255, 255, 255, 255 }; //Manual setup only
// if need to change the MAC address (Very Rare)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server = EthernetServer(80); //port 80
////////////////////////////////////////////////////////////////////////
void setup(){
Serial.begin(9600);
//Pins 10,11,12 & 13 are used by the ethernet shield
pinMode(2, OUTPUT);//led
Ethernet.begin(mac, ip, gateway, subnet);
//Ethernet.begin(mac, ip, gateway, subnet); //for manual setup
server.begin();
Serial.println(Ethernet.localIP());
}
void loop(){
// listen for incoming clients, and process qequest.
checkForClient();
}
void checkForClient(){
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
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();
client.println("<html>");
client.println("<head><title>Arduino accendere e spegnere LED</title>");
client.println("<center><h1>Accendere e spegnere LED</h1></center> </head>");
client.println("<body>");
client.println("<center>");
client.println("<table width=100>");
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"2\">");
client.println("<input type=submit value=\"LED On\">");
client.println("</form>");
client.println();
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"3\">");
client.println("<input type=submit value=\"LED Off\">");
client.println("</form>");
client.println();
client.println("</table>");
client.println("</center>");
client.println("</body>");
client.println("</html>");
sentHeader = true;
}
char c = client.read();
if(reading && c == ' ') reading = false;
if(c == '?') reading = true; //found the ?, begin reading the info
if(reading){
Serial.print(c);
switch (c) {
case '2':
//add code here to trigger on 2
digitalWrite(2, HIGH);
break;
case '3':
//add code here to trigger on 3
digitalWrite(2, LOW);
break;
}
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1); // give the web browser time to receive the data
client.stop(); // close the connection:
}
}
String readString;
#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
byte ip[] = { 192, 168, 1, 17 }; //Manual setup only
byte gateway[] = { 192, 168, 1, 1 }; //Manual setup only
byte subnet[] = { 255, 255, 255, 255 }; //Manual setup only
// if need to change the MAC address (Very Rare)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server = EthernetServer(80); //port 80
////////////////////////////////////////////////////////////////////////
void setup(){
Serial.begin(9600);
//Pins 10,11,12 & 13 are used by the ethernet shield
pinMode(2, OUTPUT);//led
Ethernet.begin(mac, ip, gateway, subnet);
//Ethernet.begin(mac, ip, gateway, subnet); //for manual setup
server.begin();
Serial.println(Ethernet.localIP());
}
void loop(){
// listen for incoming clients, and process qequest.
checkForClient();
}
void checkForClient(){
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
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();
client.println("<html>");
client.println("<head><title>Arduino accendere e spegnere LED</title>");
client.println("<center><h1>Accendere e spegnere LED</h1></center> </head>");
client.println("<body>");
client.println("<center>");
client.println("<table width=100>");
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"2\">");
client.println("<input type=submit value=\"LED On\">");
client.println("</form>");
client.println();
client.println("<form METHOD=get action=\"\">");
client.println("<input type=hidden name=\"c\" value=\"3\">");
client.println("<input type=submit value=\"LED Off\">");
client.println("</form>");
client.println();
client.println("</table>");
client.println("</center>");
client.println("</body>");
client.println("</html>");
sentHeader = true;
}
char c = client.read();
if(reading && c == ' ') reading = false;
if(c == '?') reading = true; //found the ?, begin reading the info
if(reading){
Serial.print(c);
switch (c) {
case '2':
//add code here to trigger on 2
digitalWrite(2, HIGH);
break;
case '3':
//add code here to trigger on 3
digitalWrite(2, LOW);
break;
}
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
if (c == '\n' && currentLineIsBlank) break;
if (c == '\n') {
currentLineIsBlank = true;
}else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1); // give the web browser time to receive the data
client.stop(); // close the connection:
}
}
Se avete dei problemi a far funzionare il circuito commentate o scrivete sul forum.
il led rimane sempre acceso
RispondiEliminabuongiorno Luciano Lamberti,
RispondiEliminaho appena provato il codice caricandolo con l'ide 1.0.6 su un arduino uno con wiznet5100, e funziona correttamente "Ledon" accende, "ledoff" spegne, hai fatto modifiche al codice o lo hai caricato così com'è?
Salve, dopo tanto tempo, ho riprovato il Tuo sketch,
Eliminae devo dirti che funziona, probabilmente avevo sbagliato qual'cosa. Ho inserito i miei dati mac, ecc ecc.
Ho constatato che funziona anche da remoto, se, avendo dns dinamico, quando cambia ip dns, arduino rimane sempre collegato,
Salve, e possibile, suddividere e commentare lo sketch, in modo di renderlo modificabile.
EliminaMi spiego, se io volessi usare questo programma per abbinarlo a una scheda con 8 rele,Logicamente visto
la corrente in gioco, i rele avranno un loro circuito di alimentazione, come dovrei modificare il circuito, e, se volessi, alcuni di questi rele, si sganciassero dopo, tot, tempo, come dovrei fare?
grazie per la risposta
Ciao Luciano, per aggiungere commenti basta mettere prima //commento, per quanto riguarda i relè se usi una shield 8ch 5v non ti serve altro, colleghi i pin 5v e gnd all' arduino e le uscite di arduino che in questo caso è un led ai relè, in pratica scrivi il programma per 8 led ma in realtà piloti dei relè a 5v e all'uscita puoi gestire anche la 220v, per quanto riguarda lo spegnimento ritardato puoi dare un occhiata allo scketch blink, in pratica pin5 high delay(1000) pin5 low, si accende e dopo 1 secondo si spegne e rimane spento fino al prossimo comando...
Elimina