Код: Выделить всё
#include
#define GateUp 1
#define GateDown 0
// Zmienne sieciowe
const char* ssid = "POCO X6 Pro 5G"; // Nazwa Twojej sieci WiFi
const char* password = "there_is_my_password"; // Hasło do Twojej sieci WiFi
WiFiServer server(80);
// Zmienne bramy
float GatePosition = 0; // 0 to zamknięta, 100 to całkowicie otwarta
bool isOpen = false;
int fullTime = 5000; // Czas pełnego otwarcia/zamknięcia bramy (ms)
void setup() {
// Łączenie się z siecią i otwieranie seriala
Serial.begin(115200);
Serial.println();
Serial.print("Łączenie z siecią ");
Serial.println(ssid);
WiFi.begin(ssid, password);
int retryCount = 0; // Zmienna do śledzenia prób połączenia
while (WiFi.status() != WL_CONNECTED && retryCount < 20) {
delay(1000); // Zwiększamy czas opóźnienia, by dać więcej czasu na połączenie
Serial.print("Łączenie... Status: ");
Serial.println(WiFi.status()); // Wyświetlanie statusu WiFi
retryCount++;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Połączono z WiFi!");
Serial.print("Adres IP: ");
Serial.println(WiFi.localIP());
server.begin();
} else {
Serial.println("Nie udało się połączyć z WiFi. Sprawdź SSID i hasło.");
}
server.begin();
Serial.println("Połączono z siecią!");
WiFi.hostname("MyESP8266");
pinMode(GateUp, OUTPUT);
pinMode(GateDown, OUTPUT);
// Inicjalizacja bramy
digitalWrite(GateUp, LOW);
digitalWrite(GateDown, LOW);
}
void handleRequest(String request) {
if (request.indexOf("/fullOpen") != -1) {
fullOpen();
} else if (request.indexOf("/fullClose") != -1) {
fullClose();
} else if (request.indexOf("/halfOpen") != -1) {
halfOpen();
} else if (request.indexOf("/halfClose") != -1) {
halfClose();
}
}
void fullClose() {
Serial.println("Zamykanie bramy całkowicie");
GatePosition = 0;
digitalWrite(GateDown, HIGH);
delay(fullTime); // Czas pełnego zamknięcia
digitalWrite(GateDown, LOW);
isOpen = false;
Serial.println("wykonano");
}
void fullOpen() {
Serial.println("Otwieranie bramy całkowicie");
GatePosition = 100;
digitalWrite(GateUp, HIGH);
delay(fullTime); // Czas pełnego otwarcia
digitalWrite(GateUp, LOW);
isOpen = true;
Serial.println("wykonano");
}
void halfClose() {
Serial.println("Zamykanie bramy do połowy");
GatePosition = 50;
digitalWrite(GateDown, HIGH);
delay(fullTime / 2); // Czas na połowę zamknięcia
digitalWrite(GateDown, LOW);
isOpen = false;
Serial.println("wykonano");
}
void halfOpen() {
Serial.println("Otwieranie bramy do połowy");
GatePosition = 50;
digitalWrite(GateUp, HIGH);
delay(fullTime / 2); // Czas na połowę otwarcia
digitalWrite(GateUp, LOW);
isOpen = true;
Serial.println("wykonano");
}
void loop() {
// Otwieranie serwera i czekanie na klienta
WiFiClient client = server.available();
if (!client) {
return;
}
// Czekaj aż klient wyśle jakieś dane
while (!client.available()) {
delay(1);
}
// Odczytaj pierwszą linię zapytania HTTP
String request = client.readStringUntil('\r');
Serial.print("Otrzymane żądanie: ");
Serial.println(request);
client.flush();
// Obsługa różnych ścieżek
handleRequest(request);
// Odpowiedź HTTP
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Access-Control-Allow-Origin: *");
client.println();
client.println("Operacja wykonana");
delay(1);
client.stop();
Serial.println("Klient rozłączony");
}
[Редактировать:]
Хорошо, я понял, что ESP каким-то образом дает сбой после подключения к Wi-Fi в первом цикле while, а остальная часть цикла настройки, вероятно, не работает. сделано, и последовательный порт перестает работать, но я вижу, что он подключен к моей точке доступа, у него есть IP-адрес и т. д. В чем может быть проблема?
Обнаружил проблему. Я поменял контакты Gateup и Gatedown. . Номера gpio и номера на плате выходов различаются, поскольку кто-то сказал, что контакт 1 предназначен для последовательной связи, мне не следует его использовать
Подробнее здесь: https://stackoverflow.com/questions/790 ... in-my-code