Muchas gracias Surbyte por tu respuesta. Disculpas por no poner el código en formato texto (mira que he leído las normas pero me pareció algo largo. En fin. Posteo el código más abajo.
He probado de alimentar el motor de la persiana por otro lado y los relés con un transformador de 5v compartiendo masas en arduino. He probado desde tres tomas de corriente diferente pero nada, sigue igual. Al meter corriente del motor de persiana se cuelga.
Os comparto vídeo para que veais la diferencia
Video sin corriente
Video con corriente
También he probado sin el ethershield para descartar pero nada.
Buscando por internet he visto un tema similar con un motor y no se si lo podria aplicar a mi proyecto.
Se trata de utilizar un diodo pero no se si serviria para este caso ni como tendria que ponerlo. El caso es que tiene pinta de lo que dice Surbyte en ese foro sobre FUERZA CONTRA ELECTROMOTRIZ.
Alguna idea?
Como decía ahí va elcódigo en texto. Muchas gracias de nuevo
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x2F, 0xE4 };
IPAddress ip(192,168,1,208); // ip in lan
IPAddress gateway(192,168,1,1); // internet access via router
IPAddress subnet(255,255,255,0); //subnet mask
IPAddress myserver(192,168,1,123); // zoomkat web page
EthernetServer server(80); //server port
EthernetClient client;
String readString;
String PER1_on = "off";
String PER1_off = "off";
String botoStop;
void setup(){
// switches PERSIANA
pinMode(3, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
// RELE PERSIANA 1
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite (6, HIGH);
digitalWrite (7, HIGH);
Ethernet.begin(mac, ip, subnet, gateway);
server.begin();
Serial.begin(9600);
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
}
//if HTTP request has ended
if (c == '\n') {
Serial.println(readString); //print to serial monitor for debuging
//now output HTML data header
if(readString.indexOf('?') >=0) { //don't send new page
client.println("HTTP/1.1 204 192.168.1.123");
client.println();
client.println();
}
else {
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Persianes</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>pujada i baixada de persianes</H1>");
client.println("<a href=\"/?p2up\" target=\"inlineframe\">ON</a>");
client.println("<a href=\"/?p2dw\" target=\"inlineframe\">OFF</a>");
client.println("<a href=\"/?p2st\" target=\"inlineframe\">stop</a>");
client.println("<IFRAME name=inlineframe style=\"display:none\" >");
client.println("</IFRAME>");
client.println("</BODY>");
client.println("</HTML>");
}
delay(1);
//stopping client
client.stop();
// control PERSIANA 1
if(readString.indexOf("p2up") >0)//checks for off
{
PER1_on = "on"; // save LED state
PER1_off = "off"; // save LED state
botoStop = "off";
digitalWrite(6, HIGH);
digitalWrite (7, LOW);
sendGET();
}
else if(readString.indexOf("p2dw") >0)//checks for off
{
PER1_on = "off"; // save LED state
PER1_off = "on"; // save LED state
botoStop = "off";
digitalWrite(7, HIGH);
digitalWrite (6, LOW);
sendGET();
}
else if (readString.indexOf("p2st") >0)
{
PER1_on = "off"; // save LED state
PER1_off = "off"; // save LED state
botoStop="on";
digitalWrite(7, HIGH);
digitalWrite (6, HIGH);
sendGET();
}
//clearing string for next read
readString="";
}
}
}
}
// PERSIANA 1 ACCIONS
if (digitalRead(3) == 0){
delay(20);
PER1_on = "on";
PER1_off = "off"; // save LED state
botoStop = "off";
digitalWrite(6, HIGH);
digitalWrite (7, LOW);
sendGET();
}
else if (digitalRead(5) == 0){
delay(20);
PER1_on = "off";
PER1_off = "on";
botoStop = "off";
digitalWrite (6, LOW);
digitalWrite (7, HIGH);
sendGET();
}
else if (digitalRead(2) == 0){
delay(20);
PER1_on = "off";
PER1_off = "off";
botoStop = "on";
digitalWrite (6, HIGH);
digitalWrite (7, HIGH);
sendGET();
}
}
//////////////////////////
void sendGET() //client function to send/receie GET request data.
{
String code = "p2up=" + String(PER1_on) + "&p2dw=" + String(PER1_off) + "&p2st=" + String(botoStop);
if (client.connect(myserver, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /xmlPersianes2.php?" + code + " HTTP/1.0");
client.println();
}
else {
Serial.println("connection failed");
Serial.println();
}
while(client.connected() && !client.available()) delay(1); //waits for data
while (client.connected() || client.available()) { //connected or data available
char c = client.read();
Serial.print(c);
}
Serial.println();
Serial.println("disconnecting.");
Serial.println("==================");
Serial.println();
client.stop();
}