smooth servo doesn't work perfectly on wemos d1 mini, where is the error?
#include <Arduino.h>
#ifdef ESP32
#include <WiFi.h>
#include <AsyncTCP.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#endif
#include <ESPAsyncWebServer.h>
#include <FS.h>
#include <Servo.h>
/* Put your SSID & Password */
const char* ssid = "Car-ESP"; // Enter SSID here
const char* password = "12345678"; // Enter Password here
/* Put IP Address details */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
int in1 = D6;
int in2 = D5;
// int motor_speed = 0;
const int servoPin = D1;
Servo servo;
int currentAngle = 90; // Initialize to 90 degrees
void setup(){
// Serial port for debugging purposes
// Serial.begin(115200);
// Serial.println();
servo.attach(servoPin);
servo.write(currentAngle);
if(SPIFFS.begin() == true) {
// Serial.println("SPIFFS initialised OK");
}
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
WiFi.softAP(ssid, password);
WiFi.softAPConfig(local_ip, gateway, subnet);
delay(100);
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/index.html", "text/html");
});
server.on("/assets/css/foundation.css", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/assets/css/foundation.css", "text/css");
});
server.on("/assets/js/jquery.min.js", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/assets/js/jquery.min.js", "text/js");
});
server.on("/assets/img/up.png", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/assets/img/up.png", "image/png");
});
server.on("/assets/img/down.png", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/assets/img/down.png", "image/png");
});
server.on("/forward", HTTP_GET, [] (AsyncWebServerRequest *request) {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
request->send(200, "text/plain", "ok");
});
server.on("/reverse", HTTP_GET, [] (AsyncWebServerRequest *request) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
request->send(200, "text/plain", "ok");
});
server.on("/off", HTTP_GET, [] (AsyncWebServerRequest *request) {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
request->send(200, "text/plain", "ok");
});
server.on("/angle", HTTP_POST, [](AsyncWebServerRequest *request) {
String angle = request->arg("angle");
int targetAngle = constrain(angle.toInt(), 0, 180);
moveServoSmooth(currentAngle, targetAngle);
currentAngle = targetAngle;
request->send(200);
});
// Start server
server.begin();
}
void loop() {}
// Function to move servo smoothly
void moveServoSmooth(int startAngle, int endAngle) {
if (startAngle < endAngle) {
for (int angle = startAngle; angle <= endAngle; angle++) {
servo.write(angle);
delay(20); // Adjust delay for smoothness
}
} else {
for (int angle = startAngle; angle >= endAngle; angle--) {
servo.write(angle);
delay(20); // Adjust delay for smoothness
}
}
}
