//Servidor web para apagar y encender un led en pin 8.
#include <UIPEthernet.h>
EthernetServer server = EthernetServer(80);
int led=8; //Pin del led
String estado="OFF"; //Estado del Led inicialmente "OFF"
void setup()
{
Serial.begin(9600);
uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
IPAddress myIP(192,168,1,6);
Ethernet.begin(mac,myIP);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
pinMode(led,OUTPUT);
}
void loop()
{
EthernetClient client = server.available(); //Creamos un cliente Web
//Cuando detecte un cliente a través de una petición HTTP
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true; //Una petición HTTP acaba con una línea en blanco
String cadena=""; //Creamos una cadena de caracteres vacía
while (client.connected()) {
if (client.available()) {
char c = client.read();//Leemos la petición HTTP carácter por carácter
Serial.write(c);//Visualizamos la petición HTTP por el Monitor Serial
cadena.concat(c);//Unimos el String 'cadena' con la petición HTTP (c). De esta manera convertimos la petición HTTP a un String
//Ya que hemos convertido la petición HTTP a una cadena de caracteres, ahora podremos buscar partes del texto.
int posicion=cadena.indexOf("LED="); //Guardamos la posición de la instancia "LED=" a la variable 'posicion'
if(cadena.substring(posicion)=="LED=ON")//Si a la posición 'posicion' hay "LED=ON"
{
digitalWrite(led,HIGH);
estado="ON";
}
if(cadena.substring(posicion)=="LED=OFF")//Si a la posición 'posicion' hay "LED=OFF"
{
digitalWrite(led,LOW);
estado="OFF";
}
//Cuando reciba una lÃnea en blanco, quiere decir que la petición HTTP ha acabado y el servidor Web está listo para enviar una respuesta
if (c == '\n' && currentLineIsBlank) {
// Enviamos al cliente una respuesta HTTP
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//Página web en formato HTML
client.println("<html>");
client.println("<head>");
client.println("</head>");
client.println("<body>");
client.println("<h1 align='center'>CASA RAMON</h1><h3 align='center'>LED controlado por Servidor Web con Arduino</h3>");
//Creamos los botones. Para enviar parámetros a través de HTML se utiliza el metodo URL encode. Los parámetros se envian a través del símbolo '?'
client.println("<div style='text-align:center;'>");
client.println("<button onClick=location.href='./?LED=ON\' style='margin:auto;background-color: #84B1FF;color: snow;padding: 20px;border: 2px solid #3F7CFF;width:100px;'>");
client.println("Encender");
client.println("</button>");
client.println("<button onClick=location.href='./?LED=OFF\' style='margin:auto;background-color: #84B1FF;color: snow;padding: 20px;border: 2px solid #3F7CFF;width:100px;'>");
client.println("Apagar");
client.println("</button>");
client.println("<br /><br />");
client.println("<b>LED = ");
client.print(estado);
client.println("</b><br />");
client.println("</b></body>");
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
//Dar tiempo al navegador para recibir los datos
delay(1);
client.stop();// Cierra la conexión
}
}
No hay comentarios:
Publicar un comentario