Yes, it's Arduino UNO. mmm... I don't understand what you're telling me... Could you post me anymore? I post my code with some changes I've done. I've added sensors..and I want for example that when humidity is lower than x%, led1 turns on and this change can be shown in the wabe page. How it would be?
#include <math.h>
#include <Wire.h>
#include <Servo.h>
#include <SPI.h>
#define DS1307_I2C_ADDRESS 0x68
#include "RTClib.h" // Incluye la librería RTClib
RTC_DS1307 RTC; // Crea el objeto RTC
#include <SPI.h> //Importamos librería comunicación SPI
#include <Ethernet.h> //Importamos librería Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//Ponemos la dirección MAC de la Ethernet Shield que está con una etiqueta debajo la placa
IPAddress ip(192,168,1,177); //Asingamos la IP al Arduino
EthernetServer server(80); //Creamos un servidor Web con el puerto 80 que es el puerto HTTP por defecto
//Pin digitales asociados al Relé
int ReleVent = 4; //Pin digital donde conectamos el relé asociado al ventilador
int ReleCal = 5;//Pin digital donde conectamos el relé asociado al calentador
int ReleLuz = 8; //Pin digital donde asociamos el relé asociado a la luz
int ReleAgua = 2; //Pin digital donde conectamos el relé asociado al agua
/Luminosidad
float luminosidad;
int SensorLuminosidad=3;
const int ValorLuminosidad = 50;
//Temperatura
float temperatura;
int a;
int B=3975; //B value of the thermistor
float resistencia;
const int ValorCalor = 28; //Valor temperatura superior límite para activar ventiladores
const int ValorFrio = 5; //Valor temperatura inferior límites para activar calefactor
//Humedad
int SensorHumedad=1;
float humedad;
const int ValorHumedad = 40; //Valor temperatura superior límite para activar ventiladores
float luminosidad;
int SensorLuminosidad=3;
String estado="OFF"; //Estado del Led inicialmente "OFF"
String estado2="OFF";
String estado3="OFF";
//RELOJ
//Convierte numeros decimales a BCD (binario decimal codificado)
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val)
{
return ( (val/10*16) + (val%16) );
}
float Time, minTime, maxTime;
const int minHourValue=9;
const int maxHourValue=22;
const int minMinuteValue=30;
const int maxMinuteValue=30;
void setDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
//Resetea el registro puntero
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write((byte)0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
//Necesitan enmascarar porque ciertos bits son de control
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void setup()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
Serial.begin(9600);
Wire.begin();
RTC.begin(); // Establece la velocidad de datos del RTC
//byte second, minute, hour, dayOfWeek,dayOfMonth, month, year;
pinMode(ReleAgua,OUTPUT); //Salida
pinMode(ReleVent,OUTPUT); //Salida
pinMode(ReleCal,OUTPUT); //Salida
pinMode(ReleLuz,OUTPUT);
// Inicializamos la comunicación Ethernet y el servidor
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop()
{
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1500); // La información se actualiza cada 1 seg.
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
switch (dayOfWeek)
{
case 1:
Serial.println(" Lunes"); break;
case 2:
Serial.println(" Martes"); break;
case 3:
Serial.println(" Miercoles"); break;
case 4:
Serial.println(" Jueves"); break;
case 5:
Serial.println(" Viernes"); break;
case 6:
Serial.println(" Sabado"); break;
case 7:
Serial.println(" Domingo"); break;
}
luminosidad = analogRead(SensorLuminosidad);
luminosidad= (luminosidad)/10;
a=analogRead(0);
humedad=analogRead(SensorHumedad);
humedad = (humedad)/10;
resistencia=(float)(1023-a)*10000/a; //get the resistance of the sensor;
temperatura=1/(log(resistencia/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
Serial.print("La Luminosidad actual es (0-100%) "); // Nos escribe por el puerto serie la temperatura existente
Serial.println(luminosidad);
Serial.print("La Temperatura actual es "); // Nos escribe por el puerto serie la temperatura existente
Serial.println(temperatura);
Serial.print("La Humedad actual es (0-100%) "); // Nos escribe por el puerto serie la temperatura existente
Serial.println(humedad);
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
client.print(luminosidad);
//Ya que hemos convertido la petición HTTP a una cadena de caracteres, ahora podremos buscar partes del texto.
int posicion=cadena.indexOf("VENTILADOR="); //Guardamos la posición de la instancia "LED=" a la variable 'posicion'
if(cadena.substring(posicion)=="VENTILADOR=ON")//Si a la posición 'posicion' hay "LED=ON"
{
digitalWrite(ReleVent,HIGH);
estado="ON";
}
if(cadena.substring(posicion)=="VENTILADOR=OFF")//Si a la posición 'posicion' hay "LED=OFF"
{
digitalWrite(ReleVent,LOW);
estado="OFF";
}
int posicion2=cadena.indexOf("LUZ="); //Guardamos la posición de la instancia "LED=" a la variable 'posicion'
if(cadena.substring(posicion2)=="LUZ=ON")//Si a la posición 'posicion' hay "LED=ON"
{
digitalWrite(ReleLuz,HIGH);
estado2="ON";
}
if(cadena.substring(posicion2)=="LUZ=OFF")//Si a la posición 'posicion' hay "LED=OFF"
{
digitalWrite(ReleLuz,LOW);
estado2="OFF";
}
int posicion3=cadena.indexOf("RIEGO="); //Guardamos la posición de la instancia "LED=" a la variable 'posicion'
if(cadena.substring(posicion3)=="RIEGO=ON")//Si a la posición 'posicion' hay "LED=ON"
{
digitalWrite(ReleAgua,HIGH);
estado3="ON";
}
if(cadena.substring(posicion)=="RIEGO=OFF")//Si a la posición 'posicion' hay "LED=OFF"
{
digitalWrite(ReleAgua,LOW);
estado3="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) {