#include #include #include #include #define motorAspeed D1 #define motorAdir D3 #define motorBspeed D2 #define motorBdir D4 #define servoPin D5 #define FULL_SPEED 1023 ESP8266WebServer server(80); Servo myservo; volatile unsigned int speed = FULL_SPEED; volatile unsigned int dir = 0; void stop(void) { Serial.println("Stop"); digitalWrite(motorAspeed, LOW ); digitalWrite(motorBspeed, LOW ); } void forward(void) { Serial.println("FF"); analogWrite(motorAspeed, speed); analogWrite(motorBspeed, speed); digitalWrite(motorAdir, LOW); digitalWrite(motorBdir, LOW); } void backward(void) { Serial.println("FRW"); analogWrite(motorAspeed, speed); analogWrite(motorBspeed, speed); digitalWrite(motorAdir, HIGH); digitalWrite(motorBdir, HIGH); } void left(void) { Serial.println("TL"); analogWrite(motorAspeed, speed); analogWrite(motorBspeed, speed); digitalWrite(motorAdir, HIGH); digitalWrite(motorBdir, LOW); } void right(void) { Serial.println("TR"); analogWrite(motorAspeed, speed); analogWrite(motorBspeed, speed); digitalWrite(motorAdir, LOW); digitalWrite(motorBdir, HIGH); } void handle_form() { if (server.arg("speed")) { if (server.arg("speed").toInt() > 0) { speed = server.arg("speed").toInt(); } } if (server.arg("dir")) { dir = server.arg("dir").toInt(); switch (dir) { case 1: left(); break; case 2: right(); break; case 3: backward(); break; case 4: forward(); break; case 5: stop(); break; case 6: myservo.write(0); delay(5); break; case 7: myservo.write(90); delay(5); break; case 8: myservo.write(180); delay(5); break; } } String message = ""; message += ""; message += ""; message +="
"; message += "Speed: "; message += speed; message += "
\n"; message += "Commnd: "; message += dir; message += "
\n"; message += "
" "
" " " "
" "

" "

" "

" "

" "

" "" "" "" "

"; message += "
© 2018 Mazy IoT"; message += "
\n\n"; server.send(200, "text/html; charset=utf-8", message); } void setup() { WiFi.begin("***", "**********"); while (WiFi.status() != WL_CONNECTED) { delay(200); } if (WiFi.status() == WL_CONNECTED) { Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } server.on("/", handle_form); server.begin(); pinMode(motorAspeed, OUTPUT); digitalWrite(motorAspeed, LOW ); pinMode(motorAdir, OUTPUT); digitalWrite(motorAdir, LOW ); pinMode(motorBspeed, OUTPUT); digitalWrite(motorBspeed, LOW ); pinMode(motorBdir, OUTPUT); digitalWrite(motorBdir, LOW ); myservo.attach(servoPin); delay(1000); Serial.println("Ready"); } void loop() { server.handleClient(); }