Ciao a tutti volevo controllare un led da browser tramite ethernet shield. Ho trovato un codice online che tramite la url fa cambiare stato al led .
#include <SPI.h>
#include <Ethernet.h>
//Creao un array di byte per specificare il mac address
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//creo un array di byte per specificare l'indirizzo ip
byte ip[] = {192.168.1.12}; //modificate questo valore in base alla vostra rete
char Data_RX;
String msg = "";
int cmd = 0;
//creao un oggetto server che rimane in ascolto sulla porta
//specificata
EthernetServer ArduinoServer(80);
void setup()
{
//inizializza lo shield con il mac e l'ip
Ethernet.begin(mac, ip);
//inizializza l'oggetto server
ArduinoServer.begin();
//definisco i pin2 e pin3 come uscite
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop()
{
//IMPORTANTE pulisco la variabile msg
msg = "";
EthernetClient pc_client = ArduinoServer.available();
//controllo se pc_client è true
if (pc_client =! false)
{
//controllo continuamente che il client sia connesso
while (pc_client.connected())
{
//Controllo se ci sono byte disponibili per la lettura
if (pc_client.available())
{
//leggo i byte disponibili
//provenienti dal client
Data_RX = pc_client.read();
//ricostruisco la stringa ricevuta concatenando i singoli byte
msg += Data_RX;
//Attendo che tutti i byte siano letti
//quando Data_RX contiene il carattere
//di nuova line capisco tutti i byte sono
//stati letti
if (Data_RX == '\n')
{
//cerco all'interno della stringa il parametro che mi interessa
cmd = msg.indexOf("LEDON");
//Invio la risposta al client
//invio lo status code
pc_client.println("HTTP/1.1 200 OK");
//imposto il data type
pc_client.println("Content-Type: text/html");
pc_client.println();
//invio codice html
pc_client.print("<html><body>");
pc_client.print("<head>");
//questo codice html permette di eseguireil refresh automatico
//della pagina html
pc_client.print("<META HTTP-EQUIV='refresh' CONTENT='5; /'>");
pc_client.print("</head>");
//Piloto l'uscita e invio lo stato al browser
if (cmd > 0)
{
digitalWrite(2, HIGH);
pc_client.print("<p>PIN2 Attivo</p>");
}
else
{
digitalWrite(2, LOW);
pc_client.print("<p>PIN2 NON Attivo</p>");
}
pc_client.print("</body></html>");
//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l'invio della risposta
break;
}
}
}
//chiudo la connessione
pc_client.stop();
}
}
Io quindi andando a scrivere da un browser collegato al mio Wi-Fi ' 192.168.1.12/LEDON'
Il mio led si dovrebbe accendere, il problema che non è così! Aiuti? Grazie!
(La configurazione della shield è corretta e se effettuo un ping risulta esito positivo!)