//Ενσωμάτωση βιβλιοθηκών #include #include #include //Ορισμός διεύθυνσης mac byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 190); //Ορισμός διεύθυνσης IP //Δημιουργία εξυπηρετητή που ακούει στην πόρτα 80 EthernetServer server(80); String HTTP_req; const int Servo_pin = 5; const int Tilt_pin = 2; boolean tilt; int angle = 90; Servo myServo; void setup() { Ethernet.begin(mac, ip); server.begin(); Serial.begin(9600); myServo.attach(Servo_pin); myServo.write(angle); delay(1000); myServo.detach(); pinMode(Tilt_pin, INPUT_PULLUP); tilt = digitalRead(Tilt_pin); } void loop() { EthernetClient client = server.available(); if (client) { boolean currentLineIsBlank = true; //Όσο ο πελάτης παραμένει συνδεδεμένος while (client.connected()) { if (client.available()) { //Αν υπάρχουν δεδομένα char c = client.read(); //Διάβασε έναν χαρακτήρα HTTP_req += c; //Πρόσθεσέ τον στο String //Αν ο πρώτος χαρακτήρας της γραμμής είναι ο \n //αυτό σημαίνει ότι το αίτημα ολοκληρώθηκε if (c == '\n' && currentLineIsBlank) { //Στείλε στον πελάτη μία τυπική κεφαλίδα HTTP client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html; \ charset=utf-8"); client.println("Connection: close"); client.println(); //Στείλε στον πελάτη την ιστοσελίδα client.println(""); client.println(""); client.println(""); client.println("Έλεγχος κλίσης"); client.println(""); client.println(""); client.println("

Servo με αισθητήρα \ κλίσης

"); client.println("

Σύρετε για αλλαγή \ της γωνίας του servo

"); client.println("
"); ProcessSlider(client); client.println("
"); client.println("

Γωνία κλίσης: " + \ String(angle-90) + "

"); tilt = digitalRead(Tilt_pin); client.println("

Τιμή αισθητήρα κλίσης: " \ + String(tilt) + "

"); client.println(""); client.println(""); Serial.print(HTTP_req); HTTP_req = ""; break; } if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); client.stop(); } } //Χειρισμός του slider για τον έλεγχο του servo void ProcessSlider(EthernetClient cl) { if (HTTP_req.indexOf("servo=") > -1 && \ HTTP_req.indexOf("servo=") < HTTP_req.indexOf("\n")) { int value_start = HTTP_req.indexOf("=") + 1; int value_stop = HTTP_req.indexOf(" ", value_start); String val = HTTP_req.substring(value_start,value_stop); angle = val.toInt()+90; myServo.attach(Servo_pin); myServo.write(angle); delay(1000); myServo.detach(); } cl.println(""); }