使用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.具体还要看实际情况
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();
}