Arduino D1/Esp8266网页控制舵机旋转和复位-实现智能开关

使用Arduino D1和ESP8266模块来构建一个简单的网页控制舵机旋转的程序。通过搭建一个基于Web服务器的系统,您可以通过访问Arduino D1的IP地址,通过点击按钮来控制舵机的旋转。本文将详细介绍所需的硬件和库,以及代码的实现步骤。

1.所需硬件和库:

Arduino D1开发板
ESP8266模块
舵机
杜邦线

2.需要使用以下库:

ESP8266WiFi库:用于连接WiFi网络
ESP8266WebServer库:用于创建Web服务器
Servo库:用于控制舵机

在setup()函数中,设置舵机引脚为输出模式,并将舵机对象附加到引脚。然后,使用WiFi.begin()函数连接到WiFi网络,并使用while循环等待连接成功。初始化Web服务器对象,设置根路径和舵机控制路径的处理函数,并调用server.begin()启动服务器。
在loop()函数中,使用server.handleClient()处理客户端请求。

将程序上传到Arduino D1板上,并连接到相应的WiFi网络。通过访问Arduino D1的IP地址,您将看到一个包含控制按钮的页面。点击按钮,舵机将旋转到特定的角度,再次点击按钮,舵机将恢复到初始角度。

3.Ip地址我们可以在Arduino IDE的串口监视器上看到,我的是192.168.137.40.具体还要看实际情况

IP地址

4.然后在浏览器上输入串口中的ip地址,就能看到舵机的控制界面

控制界面

5.代码,上传程序

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <Servo.h>

const char* ssid = "3199999";
const char* password = "5201314520";

const int servoPin = D2; // 控制舵机的引脚
Servo servo; // 舵机对象

ESP8266WebServer server(80); // 创建Web服务器,监听端口80

const int initialAngle = 30; // 初始角度值
const int rotatedAngle = 180; // 旋转角度值
bool isRotated = false; // 是否旋转标志

void handleRoot() {
    
    
  String buttonText = isRotated ? "Restore" : "rotate";
  String html = "<html>"
                "<body>"
                "<h1>Servo Control</h1>"
                "<form action=\"/Servo\" method=\"POST\">"
                "<input type=\"submit\" value=\"" + buttonText + "\">"
                "</form>"
                "</body>"
                "</html>";
  server.send(200, "text/html", html);
}

void handleServo() {
    
    
  isRotated = !isRotated; // 切换旋转状态

  if (isRotated) {
    
    
    servo.write(rotatedAngle); // 旋转到指定角度
  } else {
    
    
    servo.write(initialAngle); // 恢复到初始角度
  }

  server.sendHeader("Location", "/");
  server.send(303);
}

void setup() {
    
    
  pinMode(servoPin, OUTPUT); // 将舵机引脚设置为输出模式
  servo.attach(servoPin); // 将舵机对象附加到舵机引脚

  Serial.begin(115200);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    
    
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("WiFi connected");
  Serial.println("IP address: " + WiFi.localIP().toString());

  server.on("/", handleRoot);
  server.on("/Servo", handleServo);

  server.begin();
  Serial.println("Server started");

  servo.write(initialAngle); // 初始角度
}

void loop() {
    
    
  server.handleClient();
}

然后就可以通过网页控制舵机的旋转了!!

猜你喜欢

转载自blog.csdn.net/m0_63715549/article/details/131744057