以下是基础的代码框架,具体实现需要根据具体的硬件和需要进行修改和完善。

#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");
  }
}
使用Arduino IDE驱动esp8266用网页控制两个舵机和一个激光灯的激光玩具

原文地址: https://www.cveoy.top/t/topic/bsVw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录