Go Down

Topic: Problemas ethernet shield (Read 1 time) previous topic - next topic

sergiers

Hola.

Recientemente he montado una cámara móvil con 2 servos y la ethernet. Esta la controlo por internet con la shield, pero resulta que al cabo de un rato, la web acaba petando y deja de tirar.

Me gustaría saber si sabéis como puedo solucionarlo. Como podréis observar, el codigo es reutilizado, esta hecho a partir de uno que encontré (gracias por cierto, http://www.geekytheory.com/arduino-ethernet-shield-relay/ ). Os dejo el código:

Quote
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>

Servo x; 
Servo y;

int posX = 90;
int posY = 90;
//Declaración de la direcciones MAC e IP. También del puerto 80
byte mac[]={0x00,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
IPAddress ip(192,168,1,100); //IP
EthernetServer servidor(80);


String readString=String(30);
String state=String(3);

void setup()
{
  Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
  servidor.begin();
 
  state="OFF";
  x.attach( 8 );
  y.attach(9);
}

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+7)=="LED=ARR")
          {
            posY = posY -36;
           
            if(posY < 0){
             posY = 0;
            }
           
            y.write(posY);
           
            delay(1000);
          } else if (readString.substring(LED,LED+7)=="LED=ABA")
          {
             posY = posY +36;
           
            if(posY > 180){
             posY = 180;
            }
           
            y.write(posY);
                        delay(1000);

          }else if (readString.substring(LED,LED+7)=="LED=DER")
          {
             posX = posX + 36;
           
            if(posX > 180){
             posX = 180;
            }
           
            x.write(posX);
                        delay(1000);

          }else if (readString.substring(LED,LED+7)=="LED=IZQ")
          {
             posX = posX - 36;
           
            if(posX < 0){
             posX = 0;
            }
           
           x.write(posX);
                       delay(1000);

          }
         
         
          //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("<br><br>");
          cliente.print("Estado de la lampara: ");
          cliente.print(state);
          cliente.print("<br><br><br><br>");
          cliente.println("<input type=submit value=IZQ style=width:200px;height:75px onClick=location.href='./?LED=IZQ\'>");
          cliente.println("<input type=submit value=DER style=width:200px;height:75px onClick=location.href='./?LED=DER\'>");
          cliente.println("<input type=submit value=ARR style=width:200px;height:75px onClick=location.href='./?LED=ARR\'>");
          cliente.println("<input type=submit value=ABA style=width:200px;height:75px onClick=location.href='./?LED=ABA\'>");
          cliente.println("</center>");
          cliente.println("</body>");
          cliente.println("</html>");
          cliente.stop();//Cierro conexión con el cliente
          readString="";
         
        }
      }
    }
  }
}

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy