besturen webcam
4 berichten
• Pagina 1 van 1
besturen webcam
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.
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'>←</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'>→ </marquee></th>");
client.println("</tr>");
client.println("</table>");
//einde
client.println("</BODY>");
client.println("</HTML>");
}
delay(1);
//stopping client
client.stop();
}
}
}
}
}
Advertisement
Re: besturen webcam
Ik zat te denken aan een time out ..soort van ping naar de webserver
nadat de server niet reageer stopt de motor.
nadat de server niet reageer stopt de motor.
- astrofrostbyte
- Berichten: 229
- Geregistreerd: 20 Jan 2013, 12:01
Re: besturen webcam
Ik denk dat we eerst even goed moeten weten wat het verschil is tussen de volgende drie :
We moeten weten wat er gebeurt als een gebruiker zijn webpage voortijdig verlaat ed.
- 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
Re: besturen webcam
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 ?
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten