#include #include #include byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xA7, 0x51}; IPAddress ip(10,0,0,5); EthernetServer server(81); int relayPins[] = {7, 6, 5, 4}; int buttonPins[] = {8, 9, 10, 11, 12, 13}; int relayState[] = {0, 0, 0, 0}; int buttonState = 0; Servo speakerServo; String readString = String(100); void setup() { Serial.begin(9600); for (int i = 0; i < 6; i++) { Serial.println("RUN"); if (i < 4) pinMode(relayPins[i], OUTPUT); pinMode(buttonPins[i], INPUT_PULLUP); } speakerServo.attach(3); Serial.println(F("Initialaizing ethernet...")); Ethernet.begin(mac, ip); delay(1000); server.begin(); Serial.print(F("Kevin's RelayController ready at: ")); Serial.println(Ethernet.localIP()); } void loop() { int cmd = 0; boolean done = false; //checkButtons(); EthernetClient client = server.available(); if (client) { Serial.println(F("new client")); readString = ""; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); if (readString.length() < 100) readString += (c); // Check serverInputs if (c == '\n') { if (readString.indexOf("GET") != -1) { if (readString.indexOf("?1") != -1) cmd = 1; if (readString.indexOf("?2") != -1) cmd = 2; if (readString.indexOf("?3") != -1) cmd = 3; if (readString.indexOf("?4") != -1) cmd = 4; if (readString.indexOf("?5") != -1) cmd = 5; if (readString.indexOf("?6") != -1) cmd = 6; if (readString.indexOf("?7") != -1) cmd = 7; if (readString.indexOf("?8") != -1) cmd = 8; if (readString.indexOf("?9") != -1) cmd = 9; if (readString.indexOf("?10") != -1) cmd = 10; } //Serial.println(cmd); if (readString.length() >= 2) { changeState(cmd); Serial.println(F("Sending web page")); SendWebPage(client); Serial.println(F("Web page sent!")); cmd = 0; break; } readString = ""; } } } Serial.println(F("Delay before disconnecting")); delay(50); client.stop(); Serial.println(F("Client disconnected")); } } void changeState(int n) { Serial.println(n); if (n > 0 && n <= 4) { Serial.println(F("Activate Button")); digitalWrite(relayPins[n - 1], HIGH); } else if (n > 4 && n <= 8) { Serial.println(F("Activate Button")); digitalWrite(relayPins[n - 5], LOW); } else if (n == 9) { Serial.println(F("Activate Button")); speakerServo.write(156); delay(500); speakerServo.write(140); } else if (n == 10) { Serial.println(F("Activate Button")); // Do something } } void checkButtons() { for (int i = 0; i < 6; i++) { buttonState = digitalRead(buttonPins[i]); if (buttonState == LOW) { switch (i) { case 4: // break; case 3: // Turn on the servo for speaker speakerServo.write(156); delay(500); speakerServo.write(140); break; default: relayChange(i); break; } } while (buttonState == LOW) { delay(50); buttonState = digitalRead(buttonPins[i]); } } } void relayChange(int i) { if (relayState[i] == 0) { digitalWrite(relayPins[i], HIGH); relayState[i] = 1; } else { digitalWrite(relayPins[i], LOW); relayState[i] = 0; } } void SendWebPage(EthernetClient client) { client.println(F("HTTP/1.1 200 OK")); client.println(F("Content-Type: text/html")); client.println(F("Connection: close")); client.println(); client.println(F("")); client.println(F("")); client.println(F("")); client.println(F("")); client.println(F("")); client.println(F("")); client.println(F("RelayController")); client.println(F("")); client.println(F("")); client.println(F("")); client.println(F("
")); client.println(F("
RelayController

")); // Buttons if (digitalRead(relayPins[0]) == LOW) client.println(F("")); else client.println(F("")); if (digitalRead(relayPins[1]) == LOW) client.println(F("

")); else client.println(F("

")); if (digitalRead(relayPins[2]) == LOW) client.println(F("")); else client.println(F("")); if (digitalRead(relayPins[3]) == LOW) client.println(F("

")); else client.println(F("

")); client.println(F("")); client.println(F("

")); client.println(F("
")); client.println(F("")); client.println(F("")); client.println(""); }