Hola tengo problemas de hace tiempo con un webserver, tengo una placa arduino mega con ethernet shield, cuando cargo el sketch funciona a la perfección, el problema se da con el tiempo de repente deja de funcionar, puede ser después de unas horas o un día, lo que tengo que hacer es reiniciarlo y aun asi aveces lo hago hasta dos o tres veces al mismo tiempo para que empiece a funcionar de nuevo pero al final despues del tiempo que les menciono deja de funcionar...
Este mismo código solo que con menos controles digitales (menos código) lo cargo en un arduino uno y pasa exactamente lo mismo...
#include <SPI.h>
#include <Ethernet.h>
//Declaración de la direcciones MAC e IP. También del puerto 80
byte mac[] = {0x00, 0x22, 0x48, 0x9f, 0xe2, 0x3d}; //MAC
IPAddress ip(10, 10, 1, 16); //IP
IPAddress gateway(10, 10, 1, 253);
IPAddress subnet(255, 255, 0, 0);
IPAddress dnServer(10, 10, 1, 253);
EthernetServer servidor(82);
int PIN_LED = 8;
String readString = String(30);
String state41 = String(3);
String state39 = String(3);
String state37 = String(3);
String state35 = String(3);
String state33 = String(3);
String state31 = String(3);
String srcimg = "http://ceaipes.ddns.net:83/prueba2/css2/images/";
void setup()
{
Ethernet.begin(mac, ip, subnet, gateway, dnServer); //Inicializamos con las direcciones asignadas
servidor.begin();
pinMode(41, OUTPUT);
pinMode(39, OUTPUT);
pinMode(37, OUTPUT);
pinMode(35, OUTPUT);
pinMode(33, OUTPUT);
pinMode(31, OUTPUT);
digitalWrite(41, LOW);
digitalWrite(39, LOW);
digitalWrite(37, LOW);
digitalWrite(35, LOW);
digitalWrite(33, LOW);
digitalWrite(31, LOW);
state41 = "OFF";
state39 = "OFF";
state37 = "OFF";
state35 = "OFF";
state33 = "OFF";
state31 = "OFF";
}
void loop()
{
EthernetClient cliente = servidor.available();
if (cliente)
{
boolean lineaenblanco = true;
while (cliente.connected()) //Cliente conectado
{
if (cliente.available())
{
char c = cliente.read();
if (readString.length() < 30) //Leemos petición HTTP caracter a caracter
{
readString.concat(c); //Almacenar los caracteres en la variable readString
}
if (c == '\n' && lineaenblanco) //Si la petición HTTP ha finalizado
{
int LED = readString.indexOf("LED=");
if (readString.substring(LED, LED + 7) == "LED=F41")
{
digitalWrite(41, LOW);
state41 = "OFF";
} else if (readString.substring(LED, LED + 7) == "LED=T41")
{
digitalWrite(41, HIGH);
state41 = "ON";
}
else if (readString.substring(LED, LED + 7) == "LED=541")
{
digitalWrite(41, HIGH);
delay(5000);
digitalWrite(41, LOW);
state41 = "OFF";
}
if (readString.substring(LED, LED + 7) == "LED=F39")
{
digitalWrite(39, LOW);
state39 = "OFF";
} else if (readString.substring(LED, LED + 7) == "LED=T39")
{
digitalWrite(39, HIGH);
state39 = "ON";
}
else if (readString.substring(LED, LED + 7) == "LED=539")
{
digitalWrite(39, HIGH);
delay(5000);
digitalWrite(39, LOW);
state39 = "OFF";
}
if (readString.substring(LED, LED + 7) == "LED=F37")
{
digitalWrite(37, LOW);
state37 = "OFF";
} else if (readString.substring(LED, LED + 7) == "LED=T37")
{
digitalWrite(37, HIGH);
state37 = "ON";
}
else if (readString.substring(LED, LED + 7) == "LED=537")
{
digitalWrite(37, HIGH);
delay(5000);
digitalWrite(37, LOW);
state37 = "OFF";
}
if (readString.substring(LED, LED + 7) == "LED=F35")
{
digitalWrite(35, LOW);
state35 = "OFF";
} else if (readString.substring(LED, LED + 7) == "LED=T35")
{
digitalWrite(35, HIGH);
state35 = "ON";
}
else if (readString.substring(LED, LED + 7) == "LED=535")
{
digitalWrite(35, HIGH);
delay(5000);
digitalWrite(35, LOW);
state35 = "OFF";
}
//Cabecera HTTP estándar
cliente.println("HTTP/1.1 200 OK");
cliente.println("Content-Type: text/html");
cliente.println();
//Página Web en HTML
cliente.println("");
cliente.println("");
cliente.println("");
cliente.println("LAMPARA ON/OFF");
cliente.println("");
cliente.println("");
cliente.println("");
cliente.println("
// cliente.println("
");
//cliente.println("");
//cliente.println("");
//cliente.println("Wi-Fi");
//cliente.println(" ");
//cliente.println("
cliente.print("Estado de Salida 41: ");
cliente.print(state41);
cliente.println("
cliente.println("
");
cliente.print("Estado de Salida 39: ");
cliente.print(state39);
cliente.println("
cliente.println("
");
cliente.print("Estado de Salida 37: ");
cliente.print(state37);
cliente.println("
cliente.println("
");
cliente.print("Estado de Salida 35: ");
cliente.print(state35);
cliente.println("
cliente.println("
");
cliente.println("");
cliente.println("
cliente.println("");
cliente.stop();//Cierro conexión con el cliente
readString = "";
}
}
}
}
}