Buenas a todos, he utilizado este código para activar un relé por medio de mi navegador y usando una tarjeta shield ethernet, más mi arduino ONE. Es un ejemplo que circula por muchas webs, pero no consigo activar dos relés. Os dejo primero el que activa un relé y me funciona sin problemas y después el mio.
Scketch de un relé:
#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(192, 168, 1, 100); //IP
EthernetServer servidor(80);
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, HIGH);
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, LOW);
state = "ON";
} else if (readString.substring(LED, LED + 5) == "LED=F")
{
digitalWrite(PIN_LED, HIGH);
state = "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>LAMPARA ON/OFF</title>");
cliente.println("</head>");
cliente.println("<body width=100% height=100%>");
cliente.println("<center>");
cliente.println("<h1>LAMPARA ON/OFF</h1>");
cliente.print("
");
cliente.print("Estado de la lampara: ");
cliente.print(state);
cliente.print("
");
cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED=T\'>");
cliente.println("<input type=submit value=OFF 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 = "";
}
}
}
}
}
Scketch para dos relés, no me funciona y no se porqué, ¿alguien me puede ayudar ?
#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(192, 168, 1, 100); //IP
EthernetServer servidor(80);
int PIN_LED1 = 8;
String readString1 = String(30);
String state1 = String(3);
int PIN_LED2 = 9;
String readString2 = String(31);
String state2 = String(4);
void setup()
{
Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
servidor.begin();
pinMode(PIN_LED1, OUTPUT);
digitalWrite(PIN_LED1, HIGH);
state1 = "OFF";
pinMode(PIN_LED2, OUTPUT);
digitalWrite(PIN_LED2, HIGH);
state2 = "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 (readString1.length() < 30) //Leemos petición HTTP caracter a caracter
{
readString1.concat(c); //Almacenar los caracteres en la variable readString
}
if (c == '\n' && lineaenblanco) //Si la petición HTTP ha finalizado
{
int LED1 = readString1.indexOf("LED1=");
if (readString1.substring(LED1, LED1 + 5) == "LED1=T")
{
digitalWrite(PIN_LED1, LOW);
state1 = "ON";
} else if (readString1.substring(LED1, LED1 + 5) == "LED1=F")
{
digitalWrite(PIN_LED1, HIGH);
state1 = "OFF";
}
if (readString2.length() < 30) //Leemos petición HTTP caracter a caracter
{
readString2.concat(c); //Almacenar los caracteres en la variable readString
}
if (c == '\n' && lineaenblanco) //Si la petición HTTP ha finalizado
{
int LED = readString2.indexOf("LED=");
if (readString2.substring(LED, LED + 5) == "LED=T")
{
digitalWrite(PIN_LED2, LOW);
state2 = "ON";
} else if (readString2.substring(LED, LED + 5) == "LED=F")
{
digitalWrite(PIN_LED2, HIGH);
state2 = "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>LAMPARA ON/OFF</title>");
cliente.println("</head>");
cliente.println("<body width=100% height=100%>");
cliente.println("<center>");
cliente.println("<h1>LAMPARA ON/OFF</h1>");
cliente.print("
");
cliente.print("Estado de la lampara: ");
cliente.print(state1);
cliente.print("
");
cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED1=T\'>");
cliente.println("<input type=submit value=OFF style=width:200px;height:75px onClick=location.href='./?LED1=F\'>");
cliente.print("
");
cliente.print("Estado de la lampara: ");
cliente.print(state2);
cliente.print("
");
cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED=T\'>");
cliente.println("<input type=submit value=OFF style=width:200px;height:75px onClick=location.href='./?LED=F\'>");
cliente.print("
");
cliente.println("</center>");
cliente.println("</body>");
cliente.println("</html>");
cliente.stop();//Cierro conexión con el cliente
readString1 = "";
readString2 = "";
}
}
}
}
}
}