Hola tengo un codigo que arme con varios post e investigaciones en la red, la idea es que un arduino uno con ethernet shield, me mande a una base de datos los estados de 3 entradas digitales (abierto o cerrado, 1 o 0), a la vez he creado un servidor web dentro del mismo arduino a travez del puerto 85 con la intencion de poder activar o desactivar uno o mas relay, mi inquietud es la siguiente:
Arduino manda el estado de las entradas digitales cada 5 segundos, pero cuando me conecto al servidor web del arduino y le mando una peticion al relay, este tambien tarde 5 segundos en responder a veces mas o aveces menos, segun el ciclo en que se encuentre el arduino...
¿Que debo hacer para que el tiempo de respuesta al activar o desactivar un relay sea instantanteo o independiente a la espera de los 5 segundos?
Les anexo mi codigo... Gracias
/*
Web client
Circuit:
- Ethernet shield attached to pins 10, 11, 12, 13
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192, 168, 1, 188);
IPAddress ip(192, 168, 1, 177);
IPAddress gateway(192, 168, 1, 253);
IPAddress subnet(255, 255, 255, 0);
IPAddress dnServer(192, 168, 1, 253);
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client2;
//inicializamos la varible
int controlador=52;
EthernetServer server2(85);
int rele = 9;
String estado2="OFF";
String readString;
void setup() {
server2.begin();
pinMode(rele,OUTPUT);
pinMode(2, INPUT);
// start the serial library:
Serial.begin(9600);
// start the Ethernet connection:
Ethernet.begin(mac, ip, dnServer, gateway, subnet);
server2.begin();
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if (client2.connect(server, 83)) {
Serial.println("connected");
// Make a HTTP request:
client2.println();
}
else {
// kf you didn't get a connection to the server:
Serial.println("connection failed");
}
}
void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
int input0 = digitalRead(3);
int input1 = digitalRead(4);
int input2 = digitalRead(5);
client2.connect(server, 83);
client2.print("GET /prueba2/prueba.php?controlador=");
client2.print(controlador);
client2.print("&input0=");
client2.print(input0);
client2.print("&input1=");
client2.print(input1);
client2.print("&input2=");
client2.print(input2);
client2.println(" HTTP/1.0");
client2.println();
char d = client2.read();
Serial.print(d);
client2.stop();
delay(5000);
EthernetClient cliente = server2.available();
if (cliente) {
boolean currentLineIsBlank = true;
while (cliente.connected()) {
if (cliente.available()) {
char c = cliente.read();
if (readString.length() < 100) {
//Almacenar caracteres en un string
readString += c;
}
//Si ha terminado la petición del cliente
if (c == '\n') {
Serial.println(readString);
if(readString.indexOf("?encender") >0)
{
digitalWrite(9,HIGH);
estado2="ON";
}
if(readString.indexOf("?apagar") >0)
{
digitalWrite(9,LOW);
estado2="OFF";
}
//Enviamos la cabecera web
cliente.println("HTTP/1.1 200 OK");
cliente.println("Content-Type: text/html");
cliente.println();
//Mostrqamos la web de control
cliente.println("HTTP/1.1 200 OK"); //send new page
cliente.println("Content-Type: text/html");
cliente.println();
cliente.println("");
cliente.println("");
cliente.println("");
cliente.println("");
cliente.println("");
cliente.println("");
cliente.println("
cliente.println("
");
cliente.println("
");
cliente.println("
Controles Zona Dorada
");cliente.println("
");
cliente.println("<a href="/?encender"">Encender LED");
cliente.println("<a href="/?apagar"">Apagar LED
");
cliente.println("
FORZADA: ");
cliente.println(estado2);
cliente.println("
");
cliente.println("
");
cliente.println("<a href="/?button2on"">Abrir Puerta");
cliente.println("<a href="/?button2off"">Cerrar Puerta
");
cliente.println("
");
cliente.println("");
cliente.println("");
break;
}
}
}
// Darle un respiro al navegador web para recibir los datos
delay(1);
//Limpiar String para proxima etición HTTP
readString="";
//Cerrar conexión
cliente.stop();
}
}