#include #include #include #define IN1_PIN 2 #define IN2_PIN 3 const char* ssid = "EngineeringStudent"; const char* password = "cls2024!"; const char* hostname = "maestro"; WiFiServer server(80); int leftVal = 0; int upVal = 0; const char index_html[] PROGMEM = R"rawliteral( // [HTML/JavaScript from previous section] )rawliteral"; void setup() { Serial.begin(115200); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); WiFi.begin(ssid, password); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi connected. IP: " + WiFi.localIP().toString()); if (!MDNS.begin(hostname)) Serial.println("mDNS failed."); else Serial.println("mDNS responder started."); server.begin(); } void handleGet(WiFiClient& client) { client.print("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n"); client.print(index_html); } void handlePost(WiFiClient& client, String request) { String body = ""; while (client.available()) body += char(client.read()); int lIndex = body.indexOf("left="); int uIndex = body.indexOf("up="); if (lIndex != -1) { int amp = body.indexOf('&', lIndex); leftVal = body.substring(lIndex + 5, amp == -1 ? body.length() : amp).toInt(); } if (uIndex != -1) { int amp = body.indexOf('&', uIndex); upVal = body.substring(uIndex + 3, amp == -1 ? body.length() : amp).toInt(); } Serial.printf("Joystick - Left: %d | Up: %d\n", leftVal, upVal); if (upVal > 2) { digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); // motor forward } else if (upVal < -2) { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); // motor backward } else { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); // motor stop } client.print("HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n"); } void loop() { WiFiClient client = server.available(); if (client) { String req = ""; while (client.connected() && client.available()) { char c = client.read(); req += c; if (req.endsWith("\r\n\r\n")) break; } if (req.startsWith("GET /")) handleGet(client); else if (req.startsWith("POST /")) handlePost(client, req); delay(10); } }