Hallo, ich habe mir eine Web Server Sketch kopiert und abgeändert.
Ich möchte damit meine Bodenfeuchtigkeitssensor Werte anzeigen lassen.
Ich habe gelesen dass man an die Bodenfeuchtigkeitssensor nicht die ganze zeit strom anlegen soll.
Jetzt ist die Frage wie kann ich das umsetzen dass z.b jede 60 min die Feuchtigkeit gemessen wird ?
Mein 1. Versuch ist schon mal nicht schlecht denke ich , aber dort ist noch keine wirkliche Verzögerung drinnen denn das Problem ist das der delay ist in dem HTML-Code drinnen.
client.print("Yucca: <b>");
digitalWrite(power1, HIGH);
delay (500);
client.print(analogRead(A0));
digitalWrite(power1, LOW);
Meine Pin Belegungen:
Digital Pin 2 =Bodenfeuchtigkeitssensor1 plus
Digital Pin 3 =Bodenfeuchtigkeitssensor2 plus
Digital Pin 4 =Bodenfeuchtigkeitssensor3 plus
Digital Pin 5 =Bodenfeuchtigkeitssensor4 plus
Analog Pin 0 = Bodenfeuchtigkeitssensor1 Daten
Analog Pin 1 = Bodenfeuchtigkeitssensor2 Daten
Analog Pin 2 = Bodenfeuchtigkeitssensor3 Daten
Analog Pin 3 = Bodenfeuchtigkeitssensor4 Daten
Hier noch mein ganzer Code.
/*
Web Server
Eine einfacher Webserver, der den Messwert auf Analogpin 0 als HTML zurückgibt.
Based on script by David A. Mellis and Tom Igoe
*/
// Beide Libraries sind erforderlich
#include <SPI.h>
#include <Ethernet.h>
int power1 = 2;
int power2 = 3;
int power3 = 4;
int power4 = 5;
// Hier die MAC Adresse des Shields eingeben
// (Aufkleber auf Rückseite)
byte mac[] = {
0x90, 0xA2, 0xDA, 0x00, 0xFB, 0x80 };
// Eine IP im lokalen Netzwerk angeben. Dazu am besten die IP
// des PCs herausfinden (googlen!) und die letzte Zahl abändern
IPAddress ip(192,168,178,51);
// Ethernet Library als Server initialisieren
// Verwendet die obige IP, Port ist per default 80
EthernetServer server(80);
void setup() {
pinMode(power1, OUTPUT);
pinMode(power2, OUTPUT);
pinMode(power3, OUTPUT);
pinMode(power4, OUTPUT);
// Serielle Kommunikation starten, damit wir auf dem Seriellen Monitor
// die Debug-Ausgaben mitlesen können.
Serial.begin(9600);
// Ethernet Verbindung und Server starten
Ethernet.begin(mac, ip);
server.begin();
Serial.print("Server gestartet. IP: ");
// IP des Arduino-Servers ausgeben
Serial.println(Ethernet.localIP());
}
void loop() {
// server.available() schaut, ob ein Client verfügbar ist und Daten
// an den Server schicken möchte. Gibt dann eine Client-Objekt zurück,
// sonst false
EthernetClient client = server.available();
// Wenn es einen Client gibt, dann...
if (client) {
Serial.println("Neuer Client");
// Jetzt solange Zeichen lesen, bis eine leere Zeile empfangen wurde
// HTTP Requests enden immer mit einer leeren Zeile
boolean currentLineIsBlank = true;
// Solange Client verbunden
while (client.connected()) {
// client.available() gibt die Anzahl der Zeichen zurück, die zum Lesen
// verfügbar sind
if (client.available()) {
// Ein Zeichen lesen und am seriellen Monitor ausgeben
char c = client.read();
Serial.write(c);
// In currentLineIsBlank merken wir uns, ob diese Zeile bisher leer war.
// Wenn die Zeile leer ist und ein Zeilenwechsel (das \n) kommt,
// dann ist die Anfrage zu Ende und wir können antworten
if (c == '\n' && currentLineIsBlank) {
// HTTP Header 200 an den Browser schicken
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // Verbindung wird nach Antwort beendet
client.println("Refresh: 2"); // Seite alle 25 Sekunden neu abfragen
client.println();
// Ab hier berginnt der HTML-Code, der an den Browser geschickt wird
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Yucca: <b>");
digitalWrite(power1, HIGH);
delay (500);
client.print(analogRead(A0));
digitalWrite(power1, LOW);
client.print("
</b>Yucca-2: <b>");
digitalWrite(power2, HIGH);
delay (500);
client.print(analogRead(A1));
digitalWrite(power2, LOW);
client.print("
</b>Bonsai: <b>");
digitalWrite(power3, HIGH);
delay (500);
client.print(analogRead(A2));
digitalWrite(power3, LOW);
client.print("
</b>Elefantenfuss: <b>");
digitalWrite(power4, HIGH);
delay (500);
client.print(analogRead(A3));
digitalWrite(power4, LOW);
client.println("</b>
");
client.println("</html>");
break;
}
if (c == '\n') {
// Zeilenwechsel, also currentLineIsBlack erstmal auf True setzen
currentLineIsBlank = true;
}
else if (c != '\r') {
// Zeile enthält Zeichen, also currentLineIsBlack auf False setzen
currentLineIsBlank = false;
}
}
}
// Kleine Pause
delay(1);
// Verbindung schliessen
client.stop();
Serial.println("Verbindung mit Client beendet.");
Serial.println("");
}
}