Go Down

Topic: Mit Webserver Ausgänge schalten (Read 561 times) previous topic - next topic

Logomaus

Hi!
Mit meinem EthernetShield als Webserver möchte ich über eine Webseite
Ausgänge schalten. Das klappt auch soweit, die HTML-Syntax steht auch.
Nur, wie baue ich das ein, dass der gesetzte Ausgang nach einer bestimmten
Zeit wieder von selbst zurückgesetzt wird?
Und, muss ich da auch was in der HTML-Syntax verändern? Wahrscheinlich,
dass nach einer Zeit der Ausgang OFF zeigen soll, oder?

Hoffentlich kennt sich hier jemand damit aus!

LG Logomaus

Logomaus

So sieht bis jetzt das Programm aus:
#include "Metro.h"


#include <SPI.h> 
#include <Ethernet.h>
#include <Flash.h>


byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0x40, 0xF2 };    // MAC-Adresse
byte ip[]  = { 192, 168, 178, 22 };                     // IP-Adresse
byte gateway[] = { 192, 168, 178, 1 };                  // Gateway
byte subnet[]  = { 255, 255, 255, 0 };

Server server(80);

int Pin3 = 3;
int Pin4 = 4;
int Pin5 = 5;
int Pin6 = 6;
int state;
  Metro pin3Metro = Metro(1000);

String readString = String(100);      // string for fetching data from address
boolean Pin3ON = false;               // Status flag
boolean Pin4ON = false;

void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
digitalWrite(Pin3, state);

Serial.begin(9600); }

void loop(){

// Create a client connection
Client 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 = readString + c;
}

Serial.print(c);  //output chars to serial port

if (c == '\n') {  //if HTTP request has ended
digitalWrite(Pin3, state);
if(pin3Metro.check() == 1) {
// indexOf locates a character or String within another String.
// Returns the index of val within the String, or -1 if not found.
if(readString.indexOf("3=einschalten") > -1) {
digitalWrite(Pin3, HIGH);
Serial.println("Pin 3 eingeschaltet!");
Pin3ON = true;
pin3Metro.interval(1000);
}
/*if(readString.indexOf("3=ausschalten") > -1){
digitalWrite(Pin3, LOW);
Serial.println("Pin 3 ausgeschaltet!");
Pin3ON = false;
}*/else {state = LOW; }
state = LOW;
digitalWrite(Pin3, state);
}
if(readString.indexOf("4=einschalten") > -1) {
digitalWrite(Pin4, HIGH);
Serial.println("Pin 4 eingeschaltet!");
Pin4ON = true;
}
if(readString.indexOf("4=ausschalten") > -1){
digitalWrite(Pin4, LOW);
Serial.println("Pin 4 ausgeschaltet!");
Pin4ON = false;
}

if(readString.indexOf("all=Alles+aus") > -1){
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
Serial.println("Alles ausgeschaltet");
Pin3ON = false;
Pin4ON = false;
}


//clearing string for next read
readString="";

//stopping client
client.stop();
}}}}}

Go Up