#include const char* ssid = "Bombodupiarz"; #define RIGHT_MOTOR_PIN1 D1 #define RIGHT_MOTOR_PIN2 D3 #define LEFT_MOTOR_PIN1 D2 #define LEFT_MOTOR_PIN2 D4 #define LED_PIN 2 #define LEFT_MOTOR_SPEED 1023 #define RIGHT_MOTOR_SPEED 700 IPAddress local_ip(192, 168, 4, 1); IPAddress gateway(192, 168, 100, 1); IPAddress subnet(255, 255, 255, 0); ESP8266WebServer server(80); int car_mode = 0; void setup() { Serial.begin(115200); Serial.println("Bombodupiarz3000"); pinMode(RIGHT_MOTOR_PIN1, OUTPUT); pinMode(RIGHT_MOTOR_PIN2, OUTPUT); pinMode(LEFT_MOTOR_PIN1, OUTPUT); pinMode(LEFT_MOTOR_PIN2, OUTPUT); pinMode(LED_PIN, OUTPUT); car_control(); WiFi.mode(WIFI_AP); WiFi.softAP(ssid); Serial.print("AP IP address: "); Serial.println(WiFi.softAPIP()); server.on("/", HTTP_GET, handle_OnConnect); server.on("/forward", HTTP_GET, handle_forward); server.on("/backward", HTTP_GET, handle_backward); server.on("/left", HTTP_GET, handle_left); server.on("/right", HTTP_GET, handle_right); server.on("/turn", HTTP_GET, handle_turn); server.on("/stop", HTTP_GET, handle_stop); server.onNotFound(handle_NotFound); server.begin(); Serial.println("ESP8266 car server started."); digitalWrite(LED_PIN, LOW); } void loop() { server.handleClient(); car_control(); } // Web Handlers void handle_OnConnect() { car_mode = 0; Serial.println("Client connected"); server.send(200, "text/html", SendHTML()); } void handle_stop() { car_mode = 0; Serial.println("Stopped"); server.send(200, "text/plain", "Stopped"); } void handle_forward() { car_mode = 2; Serial.println("Go forward (actually backward)..."); server.send(200, "text/plain", "Forward (reversed)"); } void handle_backward() { car_mode = 1; Serial.println("Go backward (actually forward)..."); server.send(200, "text/plain", "Backward (reversed)"); } // ✅ Zmiana miejscami: poprawiony kierunek skrętów void handle_left() { car_mode = 3; Serial.println("Turn left (naprawione)..."); server.send(200, "text/plain", "Left"); } void handle_right() { car_mode = 4; Serial.println("Turn right (naprawione)..."); server.send(200, "text/plain", "Right"); } void handle_turn() { car_mode = 5; Serial.println("Turn (U-turn)..."); server.send(200, "text/plain", "Turn"); } void handle_NotFound() { car_mode = 0; Serial.println("Page error"); server.send(404, "text/plain", "Not found"); } void car_control() { switch (car_mode) { case 0: // stop digitalWrite(LEFT_MOTOR_PIN1, LOW); digitalWrite(RIGHT_MOTOR_PIN2, LOW); digitalWrite(RIGHT_MOTOR_PIN1, LOW); digitalWrite(LEFT_MOTOR_PIN2, LOW); break; case 1: // forward analogWrite(LEFT_MOTOR_PIN1, LEFT_MOTOR_SPEED); digitalWrite(RIGHT_MOTOR_PIN2, LOW); analogWrite(RIGHT_MOTOR_PIN1, RIGHT_MOTOR_SPEED); digitalWrite(LEFT_MOTOR_PIN2, LOW); break; case 2: // backward analogWrite(LEFT_MOTOR_PIN1, LEFT_MOTOR_SPEED); digitalWrite(RIGHT_MOTOR_PIN2, HIGH); analogWrite(RIGHT_MOTOR_PIN1, RIGHT_MOTOR_SPEED); digitalWrite(LEFT_MOTOR_PIN2, HIGH); break; case 3: // skręt w prawo analogWrite(LEFT_MOTOR_PIN1, LEFT_MOTOR_SPEED); digitalWrite(RIGHT_MOTOR_PIN2, HIGH); analogWrite(RIGHT_MOTOR_PIN1, RIGHT_MOTOR_SPEED); digitalWrite(LEFT_MOTOR_PIN2, LOW); break; case 4: // skręt w lewo analogWrite(LEFT_MOTOR_PIN1, LEFT_MOTOR_SPEED); digitalWrite(RIGHT_MOTOR_PIN2, LOW); analogWrite(RIGHT_MOTOR_PIN1, RIGHT_MOTOR_SPEED); digitalWrite(LEFT_MOTOR_PIN2, HIGH); break; case 5: // U-turn analogWrite(LEFT_MOTOR_PIN1, LEFT_MOTOR_SPEED); digitalWrite(RIGHT_MOTOR_PIN2, LOW); analogWrite(RIGHT_MOTOR_PIN1, RIGHT_MOTOR_SPEED); digitalWrite(LEFT_MOTOR_PIN2, HIGH); break; } } String SendHTML() { String html = R"=====(
)====="; return html; }