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();
}

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

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
要通过OpenMV控制,你需要连接OpenMV与之间的硬件接口,并编写相应的代码来控制的角度。以下是一般的步骤: 1. 硬件连接:将OpenMV的输出引脚(如PWM引脚)连接到控制引脚。确保连接正确,并根据和OpenMV的电源要求给它们供电。 2. 在OpenMV IDE中编写代码:打开OpenMV IDE,并创建一个新的Python脚本。导入相应的库以控制,例如pyb库。 3. 初始化:使用pyb库中的Pin和Timer对象初始化。你需要指定正确的引脚和计时器,以及设置PWM频率和分辨率。 4. 控制角度:使用计时器的通道和CCR寄存器,设置占空比来控制的角度。通过修改占空比的值,你可以改变的位置。 下面是一个简单的示例代码,演示了如何使用OpenMV控制: ```pythonimport pyb# 初始化servo_pin = pyb.Pin('P0', pyb.Pin.OUT_PP) servo_timer = pyb.Timer(2, freq=50) servo_channel = servo_timer.channel(1, pyb.Timer.PWM, pin=servo_pin) # 控制角度def set_servo_angle(angle): pulse_width = int(1000 + (angle /180) *1000) # 将角度转换为脉冲宽度 servo_channel.pulse_width(pulse_width) # 控制转到90度set_servo_angle(90) ``` 在上面的示例中,我们使用P0引脚连接到控制引脚,使用计时器2来生成PWM信号。通过调用`set_servo_angle()`函数,可以控制转到指定的角度。 请注意,实际的代码可能会根据你所使用的具体硬件和型号而有所不同。你需要查阅OpenMV和的文档以了解更多细节,并根据你的需求进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悸尢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值