使用Arduino IDE驱动esp8266用网页控制两个舵机和一个激光灯的激光玩具
以下是基础的代码框架,具体实现需要根据具体的硬件和需要进行修改和完善。
#include <ESP8266WiFi.h>
#include <Servo.h>
// WiFi设置
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
// 服务器设置
WiFiServer server(80);
// 两个舵机的引脚
Servo servo1;
int servo1Pin = 12;
Servo servo2;
int servo2Pin = 13;
// 激光灯的引脚
int laserPin = 14;
// 舵机角度的范围
int minAngle = 0;
int maxAngle = 180;
void setup() {
// 初始化串口
Serial.begin(9600);
// 初始化WiFi连接
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// 初始化舵机
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
// 初始化激光灯
pinMode(laserPin, OUTPUT);
// 启动服务器
server.begin();
Serial.println("Server started");
}
void loop() {
// 等待客户端请求
WiFiClient client = server.available();
if (client) {
Serial.println("New client");
String request = client.readStringUntil('\r');
Serial.println(request);
// 处理请求
if (request.indexOf("/servo1") != -1) {
// 控制舵机1
int angle = request.substring(request.indexOf("=") + 1).toInt();
angle = constrain(angle, minAngle, maxAngle);
servo1.write(angle);
Serial.print("Servo1 angle: ");
Serial.println(angle);
} else if (request.indexOf("/servo2") != -1) {
// 控制舵机2
int angle = request.substring(request.indexOf("=") + 1).toInt();
angle = constrain(angle, minAngle, maxAngle);
servo2.write(angle);
Serial.print("Servo2 angle: ");
Serial.println(angle);
} else if (request.indexOf("/laser") != -1) {
// 控制激光灯
digitalWrite(laserPin, !digitalRead(laserPin));
Serial.print("Laser: ");
Serial.println(digitalRead(laserPin));
}
// 返回响应
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><title>ESP8266 Laser Toy</title></head>");
client.println("<body>");
client.println("<h1>ESP8266 Laser Toy</h1>");
client.println("<form>");
client.println("Servo 1: <input type=\"range\" min=\"0\" max=\"180\" name=\"servo1\"><br>");
client.println("Servo 2: <input type=\"range\" min=\"0\" max=\"180\" name=\"servo2\"><br>");
client.println("<button type=\"submit\" name=\"action\" value=\"laser\">Toggle Laser</button>");
client.println("</form>");
client.println("</body>");
client.println("</html>");
delay(1);
client.stop();
Serial.println("Client disconnected");
}
}
原文地址: https://www.cveoy.top/t/topic/bsVw 著作权归作者所有。请勿转载和采集!