Buenas noches!
Estoy intentando hacer un proyecto modificado de "Andruino" al cual he añadido un interruptor para conmutar y un LM35 conectado a A0 para leer la temperatura exterior.
Puedo decir que la parte que se dedica a activar y desactivar el relé funciona a la perfección (dejando de lado alguna mejora que se podría hacer en cuanto a conmutación con el interruptor) pero los valores que me da el sensor son de alrededor de 440, en lugar de la temperatura que debería mostrar.
He probado a conectar solo el sensor en una proto (sin el resto del montaje) y los valores son correctos, por lo que he llegado a pensar que podría ser ruido, o que el cableado del sensor es más largo de lo recomendable, ¿qué me aconsejáis?
Este es el eléctrico esquema eléctrico. El SN74LS86N que aparece en el esquema son puertas lógicas XOR que uso para conmutar con el interruptor.
Y este es el código:
#include <SPI.h>
#include <Ethernet.h>
//Declaración de la direcciones MAC e IP. También del puerto 80
byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
IPAddress ip("mi IP"); //IP
EthernetServer servidor(80);
int sensor = A0;
float grados;
int PIN_LED = 8;
String readString = String(30);
String state = String(3);
void setup()
{
Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
servidor.begin();
pinMode(PIN_LED,OUTPUT);
digitalWrite(PIN_LED,LOW);
state = "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+5)=="LED=T")
{
digitalWrite(PIN_LED,HIGH);
state="ON";
} else if (readString.substring(LED,LED+5)=="LED=F")
{
digitalWrite(PIN_LED,LOW);
state="OFF";
}
grados = analogRead(sensor);
grados = 5.0*grados*100.0/1024.0;
//Cabecera HTTP estándar
cliente.println("HTTP/1.1 200 OK");
cliente.println("Content-Type: text/html");
cliente.println("Refresh: 5"); //Refresca la web cada 5 segundos
cliente.println();
delay(250);
//Página Web en HTML
cliente.println("<html>");
cliente.println("<head>");
cliente.println("<title>LUZ Y TEMPERATURA</title>");
cliente.println("</head>");
cliente.println("<body width=100% height=100%>");
cliente.println("<center>");
cliente.println("<h1>LUZ Y TEMPERATURA</h1>");
cliente.print("
");
cliente.print("Temperatura: ");
cliente.print(grados);
cliente.print("
");
if(state == "OFF"){
cliente.println("<input type=submit value=");
cliente.print(state);
cliente.println(" style=width:200px;height:75px onClick=location.href='./?LED=T\'>");
}
else{
cliente.println("<input type=submit value=");
cliente.print(state);
cliente.println(" style=width:200px;height:75px onClick=location.href='./?LED=F\'>");
}
cliente.println("</center>");
cliente.println("</body>");
cliente.println("</html>");
cliente.stop();//Cierro conexión con el cliente
readString="";
}
}
}
}
}