test step

This commit is contained in:
Luthics 2022-12-17 06:55:27 +08:00
parent 70093772ad
commit d4d7c3ecd3
7 changed files with 82 additions and 22 deletions

4
include/ping.h Normal file
View File

@ -0,0 +1,4 @@
#include <NewPing.h>
void ping_init();
void ping_loop();

View File

@ -1,3 +1,4 @@
void servo_init(); void servo_init();
void servo_loop(); void servo_loop();
void servo_deg(int servoid, int deg); void servo_deg(int servoid, int deg);
void move();

View File

@ -16,4 +16,5 @@ lib_deps =
madhephaestus/ESP32Servo@^0.12.0 madhephaestus/ESP32Servo@^0.12.0
h2zero/NimBLE-Arduino@^1.4.1 h2zero/NimBLE-Arduino@^1.4.1
ottowinter/ESPAsyncWebServer-esphome@^3.0.0 ottowinter/ESPAsyncWebServer-esphome@^3.0.0
teckel12/NewPing@^1.9.5
monitor_speed = 115200 monitor_speed = 115200

View File

@ -2,17 +2,20 @@
#include <servo.h> #include <servo.h>
#include <bt.h> #include <bt.h>
#include <web.h> #include <web.h>
#include <ping.h>
void setup() { void setup() {
Serial.begin(115200); Serial.begin(115200);
servo_init(); servo_init();
bt_init(); bt_init();
web_init(); web_init();
ping_init();
} }
void loop() { void loop() {
servo_loop(); servo_loop();
bt_loop(); bt_loop();
web_loop(); web_loop();
ping_loop();
delay(100); delay(100);
} }

13
src/ping.cpp Normal file
View File

@ -0,0 +1,13 @@
#include <ping.h>
#define TRIGGER_PIN 21
#define ECHO_PIN 19
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void ping_init() {}
void ping_loop() {
// Serial.println(sonar.ping_cm());
}

View File

@ -5,28 +5,34 @@
Servo servo[8]; Servo servo[8];
ESP32PWM pwm; ESP32PWM pwm;
int servoPin[8] = {13, 12, 14, 26, 25, 33, 32, 15}; int servoPin[8] = {13, 12, 14, 27, 26, 25, 33, 32};
int pos[8] = {0}; int pos[8] = {0};
int minUs = 500; int minUs = 550;
int maxUs = 2500; int maxUs = 2450;
void servo_init() { void servo_init() {
ESP32PWM::allocateTimer(0);
ESP32PWM::allocateTimer(1);
ESP32PWM::allocateTimer(2);
ESP32PWM::allocateTimer(3);
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
ESP32PWM::allocateTimer(i);
servo[i].setPeriodHertz(50); servo[i].setPeriodHertz(50);
} }
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
servo[i].attach(servoPin[i], minUs, maxUs); servo[i].attach(servoPin[i], minUs, maxUs);
} }
pwm.attachPin(27, 10000); pwm.attachPin(15, 10000);
servo_deg(8, 0); servo_deg(8, 90);
} }
void servo_loop() { void servo_loop() {
// servo_deg(8, 0); // servo_deg(7, 90);
// servo_deg(6, 90);
// servo_deg(8, 45);
// delay(5000); // delay(5000);
// servo_deg(8, 180); // servo_deg(8, 135);
// servo_deg(6, 180);
// delay(5000); // delay(5000);
// for (int i = 0; i < 8; i++) { // for (int i = 0; i < 8; i++) {
// servo[i].attach(servoPin[i], minUs, maxUs); // servo[i].attach(servoPin[i], minUs, maxUs);
@ -63,11 +69,32 @@ void servo_deg(int servoid, int deg) {
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
servo[i].write(deg); servo[i].write(deg);
pos[i] = deg; pos[i] = deg;
Serial.println(deg); delay(100);
} }
} else { } else {
servo[servoid].write(deg); servo[servoid].write(deg);
pos[servoid] = deg; pos[servoid] = deg;
Serial.println(deg);
} }
} }
void move() {
// for (int j = 0; j < 4; j++) {
servo_deg(0, pos[0] + 45);
delay(300);
servo_deg(2, pos[2] - 45);
delay(300);
// servo_deg(0, pos[0] - 45);
// delay(300);
// servo_deg(2, pos[2] + 45);
// delay(300);
// servo_deg(1, pos[1] + 45);
// delay(300);
// servo_deg(3, pos[3] - 45);
// delay(300);
// servo_deg(1, pos[1] - 45);
// delay(300);
// servo_deg(3, pos[3] + 45);
// delay(300);
delay(500);
// }
}

View File

@ -9,8 +9,8 @@
AsyncWebServer server(80); AsyncWebServer server(80);
const char* ssid = "Luthics' WLAN"; const char* ssid = "7-2-903";
const char* password = "qwerasdf"; const char* password = "wenwen200421";
const char* PARAM_MESSAGE = "foo"; const char* PARAM_MESSAGE = "foo";
@ -40,14 +40,17 @@ void web_init() {
</head>\ </head>\
<body>\ <body>\
<form action='servo' method='post'>\ <form action='servo' method='post'>\
<button name='deg' value='0'>0</button>\ <button name='deg' value='60'>60</button>\
<button name='deg' value='90'>90</button>\ <button name='deg' value='90'>90</button>\
<button name='deg' value='180'>180</button>\ <button name='deg' value='120'>120</button>\
</form>\ </form>\
<form action='servo' method='post'>\ <form action='servo' method='post'>\
<input name='deg' />\ <input name='deg' />\
<button name='submit' value='submit'></button>\ <button name='submit' value='submit'></button>\
</form>\ </form>\
<form action='servo' method='post'>\
<button name='move' value='90'>move</button>\
</form>\
</body>"; </body>";
request->send(200, "text/html", mp); request->send(200, "text/html", mp);
}); });
@ -77,7 +80,15 @@ void web_init() {
server.on("/servo", HTTP_POST, [](AsyncWebServerRequest* request) { server.on("/servo", HTTP_POST, [](AsyncWebServerRequest* request) {
int deg; int deg;
int servoid; int servoid;
if (request->hasParam("deg", true)) { if (request->hasParam("move", true)) {
ref_ret(request,
"<!DOCTYPE html><html><head><meta http-equiv=\"refresh\" "
"content=\"1; "
"url='http://192.168.21.9'\" /></head><body><h1>Success. Back "
"after 1 "
"sencond.</h1></body></html>");
move();
} else if (request->hasParam("deg", true)) {
deg = request->getParam("deg", true)->value().toInt(); deg = request->getParam("deg", true)->value().toInt();
if (request->hasParam("id", true)) { if (request->hasParam("id", true)) {
servoid = request->getParam("id", true)->value().toInt(); servoid = request->getParam("id", true)->value().toInt();
@ -85,12 +96,12 @@ void web_init() {
servoid = 8; servoid = 8;
} }
servo_deg(servoid, deg); servo_deg(servoid, deg);
ref_ret( ref_ret(request,
request, "<!DOCTYPE html><html><head><meta http-equiv=\"refresh\" "
"<!DOCTYPE html><html><head><meta http-equiv=\"refresh\" " "content=\"1; "
"content=\"1; " "url='http://192.168.21.9'\" /></head><body><h1>Success. Back "
"url='http://192.168.6.9'\" /></head><body><h1>Success. Back after 1 " "after 1 "
"sencond.</h1></body></html>"); "sencond.</h1></body></html>");
} else { } else {
notFound(request); notFound(request);
} }