#include <Wire.h> // Laden der notwendigen Bibliothek #include <SPI.h> #include <Ethernet.h> #include <LiquidCrystal_I2C.h> // Vorher hinzugefuegte LiquidCrystal_I2C Bibliothek hochladen LiquidCrystal_I2C lcd(0x27, 20, 4); //Hier wird das Display benannt (Adresse/Zeichen pro Zeile/Anzahl Zeilen) const int echoPin = 2; const int trigPin = 3; long duration; int distance; int full=0; int liter=0; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Adresse des Arduino Boards !WICHTIG! MAC Adresse darf nur einmal im Heimnetz vorkommen byte ip[] = { 192, 168, 178, 90}; // IP Adresse des Arduino Boards !WICHTIG! IP Adresse muss manuell im Netzwerk vergeben werden, i.d.R. 192.168.x.xxx byte gateway[] = { 192, 168,178, 1 }; // Gateway Fritzbox Standardgateway byte subnet[] = { 255, 255, 255, 0 }; // Subnet Maske (optional) EthernetServer server(80); // Port Einstellung (Standard für HTML : 80) void setup() { Wire.begin(); // I2C als Master-BUS Ethernet.begin(mac, ip); // Ethernet initialisieren server.begin(); // Auf Clients warten lcd.init(); //Im Setup wird der LCD gestartet lcd.backlight(); //Hintergrundbeleuchtung einschalten (0 schaltet die Beleuchtung aus). pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; full= map(distance,90, 19, 0, 100); // Umrechnung der cm in % liter=map(full,0,100,0,210); //Umrechung von % in Liter delay(500); // Zum testenim seriellen Monitor Serial.print("Distance: "); Serial.println(distance); Serial.println(full); Serial.println(liter); // LCD Anfang lcd.setCursor(0,0); //Text soll beim ersten Zeichen in der ersten Reihe beginnen.. lcd.print("FUELLSTAND ZISTERNE"); //In der ersten Zeile soll der Text „Test Zeile 1“ angezeigt werden lcd.setCursor(0,1); //Genauso geht es bei den weiteren drei Zeilen weiter lcd.print(" "); lcd.print(full); lcd.print(" "); lcd.print("%"); lcd.setCursor(0,2); lcd.print(" "); lcd.print(liter); lcd.print(" "); lcd.print("Ltr."); lcd.setCursor(0,3); // Zeile 4 ist noch frei lcd.print(" "); lcd.print("Verbrauch"); lcd.print(" "); lcd.print("90"); lcd.print(" "); lcd.print("Ltr."); // LCD Ende // SERVER ANFANG EthernetClient client = server.available(); //Prüfen, ob Client Seite aufruft if (client) { // Seitenaufruf durch User // Ausgabe in HTML server.print("HTTP/1.0 200 OK\r\nServer: arduino\r\nContent-Type: text/html\r\n\r\n"); server.print("<HTML><HEAD><TITLE>"); server.print("REGENWASSER"); server.print("</TITLE>"); server.print("</HEAD><BODY>"); server.print("<center><font color='green' size=6><b><u>ZISTERNE</u></b></font>"); server.print("<br>"); server.print("<br>"); server.print("<center><font size=5><b>Fuellstand <b> "); server.print("<br>"); server.print("<font color='blue'>"); server.print((full)); // Ausgabe in % server.print("</font>"); server.print("<font size=5> % </font"); server.print("<br>"); server.print("<center><font size=5><b>Fuellstand </font>"); server.print("<br>"); server.print("<font color='blue'>"); server.print(liter); // Ausgabe in Lieter server.print("</font>"); server.print("<font size=5> Ltr.</font"); server.print("<br>"); server.print("<center><font size=5><b>Verbrauch </font>"); server.print("<br>"); server.print("<font color='red'>"); server.print("90"); // Ausgabe in Lieter server.print("</font>"); server.print("<font size=5> Ltr.</font"); server.print("<br>"); delay(1000); client.stop();// Verbindung mit dem Client trennen } }