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");
}
вот код( нарезал из того что знаю и подобного в интернете) 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");
}