besturen webcam

Arduino specifieke Software
Berichten: 3
Geregistreerd: 20 Mrt 2013, 22:02

besturen webcam

Berichtdoor Weerman » 08 Mei 2013, 22:40

Hallo forumleden,

Sinds kort heb ik een webcam die ik kan besturen met arduino Ethernetshield.
zie http://www.meteo-bredevoort.nl/webcam.html
De webcam wordt aangedreven met en ruitenwissermotor.
Met de knoppen linksom en rechtsom kan ik de motor laten draaien.
Als men niet op stop drukt stopt de motor automatisch na 38 seconden.

Nu heb ik het volgende probleem.

Als een client binnen 38 seconden (als de motor draait) de verbinding met de arduino webserver verbreekt blijft de motor eindeloos doorlopen, totdat er weer een client contact maakt met de arduino webserver, dan stopt de motor.

Mijn vraag is of het mogelijk is de motor automatisch te laten stoppen als de client de verbinding binnen 38 seconden verbreekt.

Ik heb de volgende code gebruikt.
Code: Alles selecteren
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 2, 177 }; // ip in lan

EthernetServer server(8080); //server port

unsigned long timestamp;

String readString;
boolean Pin4AAN = false;                  // Status flag
boolean Pin5AAN = false;

void setup(){

  pinMode(4, OUTPUT); //pin selected to control
  pinMode(5, OUTPUT);
  //start Ethernet
  Ethernet.begin(mac, ip);
  server.begin();


}

void loop()


{
  // Create a client connection
  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;
          //Serial.print(c);
        }



        //if HTTP request has ended
        if (c == '\n') {
if ( Pin5AAN || Pin4AAN)
{   if ( millis() - timestamp >= 38000 )
  {  digitalWrite(4, LOW);
     digitalWrite(5, LOW);
     Pin4AAN = false;  Pin5AAN = false;
  }
}
         
if(readString.indexOf("linksom") >0)//checks for on
          {digitalWrite(4, HIGH);
           digitalWrite(5,LOW);
            Pin5AAN = true;
            Pin4AAN = false;
            timestamp = millis();
          }
          if(readString.indexOf("stop") >0)//checks for off
          {
            digitalWrite(4, LOW);    // set pin 4 low
            digitalWrite(5,LOW);
            Pin4AAN = false;
            Pin5AAN = false;
          }
         
          if(readString.indexOf("rechtsom") >0)//checks for on
          {
            digitalWrite(5, HIGH);
            digitalWrite(4,LOW);
            Pin4AAN = true;
            Pin5AAN = false;
            timestamp = millis();
          }
         
          //clearing string for next read
          readString="";

          //now output HTML data header
             if(readString.indexOf('?') >=0) { //don't send new page
               client.println("HTTP/1.1 204 Zoomkat");
               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>Webcam Meteo Bredevoort</TITLE>");
          client.println("<style type='text/css'>");
          client.println("<!--");
         
  client.println(".stijl1 {");
     client.println("color: #FFFF00;");
     client.println("font-size: 36px;");
          client.println("}");
         
          client.println(".opmaak_knop {");
     client.println("font-family: Arial, Helvetica, sans-serif;");
     client.println("font-size: 12px;");
     client.println("font-style: italic;");
     client.println("color: #0000FF;");
          client.println("}");

          client.println("-->");
          client.println("</style>");
          client.println("</HEAD>");
          client.println("<BODY>");
//begin

client.println("<table width='800' border='0'><tr>");

client.println(" <th width='203'><marquee scrollamount='3' direction='lef'' 'loop='0' class='stijl1'>&larr;</marquee></th>");

client.println("<th width='144'><form method=get<input name=/?rechtsom type=submit class='opmaak_knop' value='LINKSOM' /></form></th>");

client.println("<td width='66'><form method=get><input name=/?stop type=submit class=opmaak_knop' value='STOP' /></form></td>");

client.println("<th width='142'><form method=get><input name=/?linksom type=submit class='opmaak_knop' value='RECHTSOM' /></form></th>");
   
client.println("<th width='223'><marquee direction='right' ' loop='0' scrollamount='3' class='stijl1'>&rarr; </marquee></th>");
 
client.println("</tr>");
client.println("</table>");



//einde
         
          client.println("</BODY>");
          client.println("</HTML>");
             }

          delay(1);
          //stopping client
          client.stop();

   

        }
      }
    }
  }
}

Advertisement

Berichten: 36
Geregistreerd: 17 Dec 2012, 23:26
Woonplaats: Den haag

Re: besturen webcam

Berichtdoor marco01 » 09 Mei 2013, 11:47

Ik zat te denken aan een time out ..soort van ping naar de webserver
nadat de server niet reageer stopt de motor.

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: besturen webcam

Berichtdoor astrofrostbyte » 09 Mei 2013, 11:57

Ik denk dat we eerst even goed moeten weten wat het verschil is tussen de volgende drie :
  • if (client) {
  • while (client.connected()) {
  • if (client.available()) {

We moeten weten wat er gebeurt als een gebruiker zijn webpage voortijdig verlaat ed.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 36
Geregistreerd: 17 Dec 2012, 23:26
Woonplaats: Den haag

Re: besturen webcam

Berichtdoor marco01 » 24 Mei 2013, 19:34

astrofrostbyte schreef:Ik denk dat we eerst even goed moeten weten wat het verschil is tussen de volgende drie :
  • if (client) {
  • while (client.connected()) {
  • if (client.available()) {

We moeten weten wat er gebeurt als een gebruiker zijn webpage voortijdig verlaat ed.

Daar is misschien een log file handig bij ?

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 21 gasten