1 Star 0 Fork 0

daniel2y/esp32

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
esp8266通过drv8833控制电机驱动马达 4.56 KB
一键复制 编辑 原始数据 按行查看 历史
daniel2y 提交于 2024-12-28 14:02 +08:00 . add esp8266通过drv8833控制电机驱动马达.
``` C
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
// WiFi配置
const char *ssid = "xxx";
const char *password = "xxx";
ESP8266WiFiMulti wifiMulti;
// Web服务器实例
ESP8266WebServer server(80);
// GPIO定义
#define AIN1 5 // D1
#define AIN2 4 // D2
#define BIN1 14 // D5
#define BIN2 12 // D6
#define LED_PIN D4
void controlMotors(int command);
String sendHTML(int moveState);
enum MOVE {
FORWARD, // 默认从0开始
BACKWARD, // 1
LEFT, // 2
RIGHT, // 3
STOP
};
void blink(int pin, int t, int n) {
for (int i = 0; i < n; i++) {
digitalWrite(pin, LOW);
delay(t);
digitalWrite(pin, HIGH);
delay(t);
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
// 初始化GPIO模式
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
wifiMulti.addAP("xxx", "xxx");
wifiMulti.addAP("xxx", "xxx");
Serial.println("Connecting ...");
int i = 0;
while (wifiMulti.run() != WL_CONNECTED) {
delay(1000);
Serial.print(i++);
Serial.print(' ');
}
// 连接到WiFi网络
// WiFi.begin(ssid, password);
// while (WiFi.status() != WL_CONNECTED) {
// delay(1000);
// Serial.println("Connecting to WiFi...");
// }
Serial.print("Connected to WiFi : ");
Serial.println(WiFi.SSID());
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
blink(LED_PIN, 500, 3);
// 设置路由处理程序
server.on("/", HTTP_GET, []() {
// String html = "<html><body>";
// html += "<h1>Motor Control</h1>";
// html += "<a href=\"/forward\">Forward</a><br>";
// html += "<a href=\"/backward\">Backward</a><br>";
// html += "<a href=\"/left\">Left</a><br>";
// html += "<a href=\"/right\">Right</a><br>";
// html += "<a href=\"/stop\">Stop</a><br>";
// html += "</body></html>";
server.send(200, "text/html", sendHTML(4));
});
server.on("/forward", HTTP_GET, []() { controlMotors(FORWARD); });
server.on("/backward", HTTP_GET, []() { controlMotors(BACKWARD); });
server.on("/left", HTTP_GET, []() { controlMotors(LEFT); });
server.on("/right", HTTP_GET, []() { controlMotors(RIGHT); });
server.on("/stop", HTTP_GET, []() { controlMotors(STOP); });
server.begin();
Serial.println("HTTP server started");
}
void loop() { server.handleClient(); }
void controlMotors(int command) {
switch (command) {
case FORWARD:
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
digitalWrite(BIN1, HIGH);
digitalWrite(BIN2, LOW);
break;
case BACKWARD:
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, HIGH);
digitalWrite(BIN1, LOW);
digitalWrite(BIN2, HIGH);
break;
case LEFT:
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, HIGH);
digitalWrite(BIN1, HIGH);
digitalWrite(BIN2, LOW);
break;
case RIGHT:
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
digitalWrite(BIN1, LOW);
digitalWrite(BIN2, HIGH);
break;
case STOP:
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, LOW);
digitalWrite(BIN1, LOW);
digitalWrite(BIN2, LOW);
break;
}
server.send(200, "text/html", sendHTML(command));
}
String sendHTML(int moveState) {
String html = "<html>";
// html+="<head><meta http-equiv='refresh' content='5'/>\n";
html+="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
html += "<title>ESP8266 drv8833 drive motor</title>\n";
html+="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
html+="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
html+="</style>\n";
html+="</head>\n";
html += "<body><h1>Motor Control</h1>";
html += "<a href=\"/forward\">前进</a><br>";
html += "<a href=\"/backward\">后退</a><br>";
html += "<a href=\"/left\">左转</a><br>";
html += "<a href=\"/right\">右转</a><br>";
html += "<a href=\"/stop\">停止</a><br>";
html += "<h1>Motor State</h1>";
switch (moveState) {
case FORWARD:
html += "<p>Move Status: 前进</p>\n";
break;
case BACKWARD:
html += "<p>Button Status: 后退</p>\n";
break;
case LEFT:
html += "<p>Button Status: 左转</p>\n";
break;
case RIGHT:
html += "<p>Button Status: 右转</p>\n";
break;
case STOP:
html += "<p>Button Status: 停止</p>\n";
break;
}
html += "</body></html>";
return html;
}
```
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/y2h/esp32.git
git@gitee.com:y2h/esp32.git
y2h
esp32
esp32
master

搜索帮助