• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Как управлять сервоприводами(сдеалать ползунки и считывать их показания) с локального сервера wemos mini?

Gulesh

New member
Конкретно взялся за esp сегодня, до этого сделал небольшого телеграммбота. Сейчас моя плата esp8266 не подключается к wifi вовсе поэтому делаю через локальный сервер (поправьте если неправильно называю

вот код( нарезал из того что знаю и подобного в интернете) arduino ide

#include <ESP8266WiFi.h>
#include <Servo.h>
// Настройки точки доступа
const char* ssid = "WemosMini_AP";
const char* password = "12345678";
WiFiServer server(80);
// Пины для светодиода и сервоприводов
const int ledPin = LED_BUILTIN; // светодиод
const int servoPin1 = D3; // Первый сервопривод
const int servoPin2 = D4; // Второй сервопривод
Servo servo1;
Servo servo2;
int servoPos1 = 90; // начальное положение сервопривода 1
int servoPos2 = 90; // начальное положение сервопривода 2
void setup() {
Serial.begin(115200);
delay(10);
// Инициализация пина светодиода
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Инициализация сервоприводов
servo1.attach(servoPin1);
servo2.attach(servoPin2);
servo1.write(servoPos1);
servo2.write(servoPos2);
// Создаем точку доступа
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("Access Point IP address: ");
Serial.println(myIP);
// Запускаем сервер
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.println("New Client");
while(!client.available()){
delay(1);
}
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Обработка запросов для включения/выключения светодиода
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, LOW);
} else if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, HIGH);
}
// Обработка запросов для управления сервоприводами
int pos1 = -1;
int pos2 = -1;
int idx1 = request.indexOf("/servo1=");
if (idx1 != -1) {
int startIdx = idx1 + 8;
int endIdx = request.indexOf(' ', startIdx);
if (endIdx == -1) endIdx = request.length();
String val = request.substring(startIdx, endIdx);
pos1 = val.toInt();
if (pos1 >= 0 && pos1 <= 180) {
servoPos1 = pos1;
servo1.write(servoPos1);
}
}
int idx2 = request.indexOf("/servo2=");
if (idx2 != -1) {
int startIdx = idx2 + 8;
int endIdx = request.indexOf(' ', startIdx);
if (endIdx == -1) endIdx = request.length();
String val = request.substring(startIdx, endIdx);
pos2 = val.toInt();
if (pos2 >= 0 && pos2 <= 180) {
servoPos2 = pos2;
servo2.write(servoPos2);
}
}
Serial.println(servoPos2);
// Формируем страницу с кнопками и ползунками
String html = "<!DOCTYPE HTML><html><head><title>Wemos Mini Control</title></head><body>";
html += "<h1>Control</h1>";
// Светодиод
html += "<p>Led: " + String(digitalRead(ledPin) == HIGH ? "ON" : "OFF") + "</p>";
html += "<a href=\"/LED=ON\"><button>On</button></a>";
html += "<a href=\"/LED=OFF\"><button>Off</button></a>";
// Первый сервопривод
html += "<h2>Servo 1</h2>";
html += "<form method='GET'>";
html += "<input type='range' min='0' max='180' value='" + String(servoPos1) + "' name='servo1' ";
servo2.write(servoPos1);
html += "oninput='this.nextElementSibling.value=this.value'>";
html += "<output>" + String(servoPos1) + "</output><br>";
html += "<input type='submit' value='reload'>";
html += "</form>";
// Второй сервопривод
html += "<h2>Servo 2</h2>";
html += "<form method='GET'>";
html += "<input type='range' min='0' max='180' value='" + String(servoPos2) + "' name='servo2' ";
servo2.write(servoPos2);
html += "oninput='this.nextElementSibling.value=this.value'>";
html += "<output>" + String(servoPos2) + "</output><br>";
html += "<input type='submit' value='reload'>";
html += "</form>";
html += "</body></html>";
// Отправляем страницу
client.print("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n");
client.print(html);
delay(1);
Serial.println("Client disonnected");
}
 
Сверху Снизу