Hola, tenía hasta hace un par de semanas un Due con un ethernet w5100 funcionando para prender unas luces, el código es de mas o menos hace año y medio y no lo había tocado más, en ese momento fue lo que pude armar y como funcionó lo deje así hasta ahora que quise empezar a meterle mano nuevamente y me paso que ahora se me cuelga, exactamente todo igual, osea probé los cambios y como se me colgaba pensé que era el código o algo que conecte y volví todo para atrás pero pasa lo mismo, lo que no probé volver para atrás es el IDE, las librerías solo probé bajar la ethernet de la 2.0 a la 1.1.2, pero igual funciona unos segundos y se cuelga, puede que la SPI se actualizara y me genere problemas?, voy a probar de instalar una versión más vieja, la DHT uso la misma versión que siempre, también probé con un par de arduino y ethernet distinto por si había jodido uno de los dos, pero hace lo mismo, incluso probé un w5500 y lo mismo, sigó suponiendo que debe ser un tema de librerías o Ide de ultima, si alguien sabe algo de esto se agradece
Saludos
#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h>
#define DHTPIN 7
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
//Declaración de la direcciones MAC e IP. También del puerto 80
byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
IPAddress ip(192,168,0,49); //IP
EthernetServer servidor(533);
int PR2=2;
int PR3=3;
int PR4=4;
int PR5=5;
int PR6=6;
int PR7=53;
int PR8=8;
int PR9=9;
int temp;
String readString=String(30);
String st2, st3, st4, st5, st6, st7, st8, st9 =String(3);
void setup()
{
Ethernet.begin(mac,ip);//Inicializamos con las direcciones asignadas
servidor.begin();
dht.begin();
pinMode(PR2,OUTPUT);
pinMode(PR3,OUTPUT);
pinMode(PR4,OUTPUT);
pinMode(PR5,OUTPUT);
pinMode(PR6,OUTPUT);
pinMode(PR7,OUTPUT);
pinMode(PR8,OUTPUT);
pinMode(PR9,OUTPUT);
digitalWrite(PR2,HIGH);
digitalWrite(PR3,HIGH);
digitalWrite(PR4,HIGH);
digitalWrite(PR5,HIGH);
digitalWrite(PR6,HIGH);
digitalWrite(PR7,HIGH);
digitalWrite(PR8,HIGH);
digitalWrite(PR9,HIGH);
st2="OFF";
st3="OFF";
st4="OFF";
st5="OFF";
st6="OFF";
st9="OFF";
temp=21;
}
void loop()
{
int h = dht.readHumidity();// Leer el sensor
int t = dht.readTemperature();
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 R2 = readString.indexOf("R2=");
int R3 = readString.indexOf("R3=");
int R4 = readString.indexOf("R4=");
int R5 = readString.indexOf("R5=");
int R6 = readString.indexOf("R6=");
int R7 = readString.indexOf("R7=");
int R8 = readString.indexOf("R8=");
int R9 = readString.indexOf("R9=");
float h = dht.readHumidity();// Leer el sensor
float t = dht.readTemperature();
if(readString.substring(R2,R2+4)=="R2=T")
{
digitalWrite(PR2,LOW);
st2="ON";
} else if (readString.substring(R2,R2+4)=="R2=F")
{
digitalWrite(PR2,HIGH);
st2="OFF";
}
if(readString.substring(R3,R3+4)=="R3=T")
{
digitalWrite(PR3,LOW);
st3="ON";
} else if (readString.substring(R3,R3+4)=="R3=F")
{
digitalWrite(PR3,HIGH);
st3="OFF";
}
if(readString.substring(R4,R4+4)=="R4=T")
{
digitalWrite(PR4,LOW);
st4="ON";
}
else if (readString.substring(R4,R4+4)=="R4=F")
{
digitalWrite(PR3,HIGH);
st4="OFF";
}
if(readString.substring(R5,R5+4)=="R5=T")
{
digitalWrite(PR5,LOW);
delay(500);
digitalWrite(PR5,HIGH);
st5="ON";
} else if (readString.substring(R5,R5+4)=="R5=F")
{
digitalWrite(PR5,LOW);
delay(500);
digitalWrite(PR5,HIGH);
st5="OFF";
}
if(readString.substring(R6,R6+4)=="R6=T")
{
digitalWrite(PR6,LOW);
delay(500);
digitalWrite(PR6,HIGH);
st6="ON";
}
else if(readString.substring(R6,R6+4)=="R6=F")
{
digitalWrite(PR6,HIGH);
st6="OFF";
}
if(readString.substring(R7,R7+4)=="R7=T")
{
digitalWrite(PR7,LOW);
delay(500);
digitalWrite(PR7,HIGH);
st7="ON";
}
else if(readString.substring(R7,R7+4)=="R7=F")
{
digitalWrite(PR7,LOW);
delay(500);
digitalWrite(PR7,HIGH);
temp=temp+1;
}
if(readString.substring(R8,R8+4)=="R8=T")
{
digitalWrite(PR8,LOW);
delay(500);
digitalWrite(PR8,HIGH);
temp=temp-1;
}else if(readString.substring(R8,R8+4)=="R8=F")
{
digitalWrite(PR8,HIGH);
st8="OFF";
}
if(readString.substring(R9,R9+4)=="R9=T")
{
digitalWrite(PR9,LOW);
delay(500);
digitalWrite(PR9,HIGH);
st9="Modo";
} else if (readString.substring(R9,R9+4)=="R9=F")
{
digitalWrite(PR9,HIGH);
st9="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("<html>");
cliente.println("<head>");
cliente.println("<title>Luces</title>");
cliente.println("</head>");
cliente.println("<body width=100% height=100%>");
cliente.println("<center>");
cliente.println("<h1>Luces</h1>");
cliente.print("
");
cliente.print("Comedor: ");
cliente.print(st2);
cliente.print(" ");
cliente.print("Cuarto: ");
cliente.print(st3);
cliente.print(" ");
cliente.print("Aire A/C Encendido: ");
cliente.print(st5);
cliente.print(" ");
cliente.print("Aire A/C Temp: ");
cliente.print(st6);
cliente.print(" ");
cliente.print("Aire A/C Modo: ");
cliente.print(temp);
cliente.print("
");
cliente.println("<input type=submit value=ON style=width:100px;height:35px onClick=location.href='./?R2=T\'>");
cliente.println("<input type=submit value=OFF style=width:100px;height:35px onClick=location.href='./?R2=F\'>");
cliente.print(" ");
cliente.println("<input type=submit value=ON style=width:100px;height:35px onClick=location.href='./?R3=T\'>");
cliente.println("<input type=submit value=OFF style=width:100px;height:35px onClick=location.href='./?R3=F\'>");
cliente.print(" ");
cliente.println("<input type=submit value=AireON style=width:100px;height:35px onClick=location.href='./?R5=T\'>");
cliente.println("<input type=submit value=AireOFF style=width:100px;height:35px onClick=location.href='./?R5=F\'>");
cliente.print(" ");
cliente.println("<input type=submit value=ON style=width:100px;height:35px onClick=location.href='./?R6=T\'>");
cliente.println("<input type=submit value=OFF style=width:100px;height:35px onClick=location.href='./?R6=F\'>");
cliente.print(" ");
cliente.println("<input type=submit value=+Temp style=width:100px;height:35px onClick=location.href='./?R7=T\'>");
cliente.println("<input type=submit value=-Temp style=width:100px;height:35px onClick=location.href='./?R8=T\'>");
cliente.print(" ");
cliente.println("<input type=submit value=Modo style=width:100px;height:35px onClick=location.href='./?R9=T\'>");
cliente.println("<input type=submit value=OFF style=width:100px;height:35px onClick=location.href='./?R9=F\'>");
cliente.print("
");
cliente.print("
");
cliente.print("<body><h1>Situacion Ambiente</h1> <h2><p> Temperatura: ");
cliente.print(t);// Aqui va la temperatura
cliente.print(" C </p>");
cliente.print("<p>Humedad: ");
cliente.print(h);// Aqui va la humedad
cliente.print(" % </p></h2>");
cliente.println("</center>");
cliente.println("</body>");
cliente.println("</html>");
cliente.stop();//Cierro conexión con el cliente
readString="";
}
}
}
}
}