#include #include // Einfacher Webserver // Im Browser http:/// eingeben // z.B. http://192.168.0.42/ // Einrichtung: siehe Echo-Programm // LED zum Ein- und Ausschalten int led = 13; // MAC-Adresse byte mac[] = { 0xAF, 0xFE, 0xAB, 0xBA, 0xDE, 0xAF }; // IP-Adresse IPAddress ip(192, 168, 0, 42); // Server EthernetServer server(80); // HTTP-Protokoll void setup() { // Serielle Schnittstelle zur Ausgabe der IP nutzen Serial.begin(9600); // Ethernet-Verbindung und Server starten Serial.println("IP-Adresse ueber DHCP anfordern..."); if (Ethernet.begin(mac) == 0) { Serial.println("DHCP-Anfrage fehlgeschlagen - manuelle Konfiguration"); Ethernet.begin(mac, ip); } server.begin(); Serial.print("Arduino hat die IP-Adresse "); Serial.println(Ethernet.localIP()); // LED schalten pinMode(led, OUTPUT); } // Puffer fuer das empfangene Kommando vom Browser const int COMMAND_SIZE = 2048; char command[COMMAND_SIZE]; void loop() { // Anfrage bearbeiten EthernetClient client = server.available(); if (client) { int currentLineIsBlank = 1; int cmd = 0; while (client.connected()) { // Client verbunden if (client.available()) { // Zeichen verfuegbar char c = client.read(); Serial.write(c); if (cmd < COMMAND_SIZE - 1) command[cmd++] = c; if (c == '\n' && currentLineIsBlank) { command[cmd] = '\0'; // Antwort schicken client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println("Refresh: 5"); client.println(); client.println(""); client.println(""); client.println("

Mein Arduino

"); // Analoge Anschluesse ausgeben for (int pin = 0; pin < 6; pin++) { int sensorValue = analogRead(pin); client.print("Analog-Eingang "); client.print(pin); client.print(" hat den Wert "); client.print(sensorValue); client.println("
"); } // Anschluss 0 als Balken ausgeben int value = analogRead(0); for (int i = 0; i < value; i += 100) client.print("#"); client.println("
"); client.println("

"); client.println("LED einschalten"); client.println(" | "); client.println("ausschalten"); client.println("

"); client.println(""); // Auf Kommando reagieren if (strncmp(command, "GET /on", 7) == 0) { Serial.println("on!"); digitalWrite(led, HIGH); } if (strncmp(command, "GET /off", 8) == 0) { Serial.println("off!"); digitalWrite(led, LOW); } break; } if (c == '\n') { currentLineIsBlank = 1; } else if (c != '\r') { currentLineIsBlank = 0; } } } delay(1); client.stop(); } }