Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- #include <ESP8266WiFi.h>
- Servo servoMotor; // Создаем объект Servo
- #define relayPin D5 // Пин, на котором подключено реле
- const char* ssid = "ITKVANT"; // Название вашей Wi-Fi сети
- const char* password = "f4220Ak3"; // Пароль от Wi-Fi сети
- WiFiServer server(80);
- boolean isFeeding = false; // Флаг, указывающий, выполняется ли кормление
- void setup() {
- servoMotor.attach(D1); // Подключаем сервопривод к пину D1 (GPIO5)
- pinMode(relayPin, OUTPUT); // Устанавливаем пин реле как выход
- digitalWrite(relayPin, HIGH); // Выключаем реле (включаем питание сервопривода)
- Serial.begin(115200); // Инициализация монитора порта
- // Подключение к Wi-Fi сети
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(1000);
- Serial.println("Подключение к Wi-Fi...");
- }
- Serial.println("Подключено к Wi-Fi");
- Serial.print("IP-адрес: ");
- Serial.println(WiFi.localIP());
- // Настройка сервера
- server.begin();
- }
- void loop() {
- WiFiClient client = server.available();
- if (client) {
- Serial.println("Новый клиент подключен");
- // Читаем данные от клиента
- String request = client.readStringUntil('\r');
- client.flush();
- // Обработка запросов
- if (request.indexOf("/feed") != -1) {
- if (!isFeeding) {
- isFeeding = true;
- startFeeding();
- isFeeding = false;
- }
- // Отправляем ответ на запрос
- sendFeedResponse(client);
- } else {
- client.println("HTTP/1.1 404 Not Found");
- client.println("Content-Type: text/html; charset=utf-8"); // Установка кодировки UTF-8
- client.println();
- client.println("<html><body></body></html>");
- }
- // Отправка веб-страницы
- sendWebPage(client);
- client.stop();
- Serial.println("Клиент отключен");
- }
- }
- void startFeeding() {
- digitalWrite(relayPin, LOW); // Включаем реле (включаем питание сервопривода)
- Serial.println("Кормление начато");
- servoMotor.write(0); // Устанавливаем сервопривод в 0 градусов
- delay(20000); // Запускаем сервопривод на 20 секунд
- servoMotor.write(90); // Возвращаем сервопривод в исходное положение (90 градусов)
- digitalWrite(relayPin, HIGH); // Выключаем реле (выключаем питание сервопривода)
- Serial.println("Кормление завершено");
- }
- void sendWebPage(WiFiClient client) {
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: text/html; charset=utf-8"); // Установка кодировки UTF-8
- client.println();
- client.println("<html><body>");
- client.println("<h1>Покормить рыбок</h1>");
- client.println("<button onclick='feedFish()'>Покормить рыб</button>");
- client.println("<script>");
- client.println("function feedFish() {");
- client.println("var xhr = new XMLHttpRequest();");
- client.println("xhr.onreadystatechange = function() {");
- client.println("if (xhr.readyState == 4 && xhr.status == 200) {");
- client.println("alert('Благодаря вам рыбки покушают!');");
- client.println("}");
- client.println("};");
- client.println("xhr.open('GET', '/feed', true);");
- client.println("xhr.send();");
- client.println("}");
- client.println("</script>");
- client.println("</body></html>");
- }
- void sendFeedResponse(WiFiClient client) {
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: text/html; charset=utf-8"); // Установка кодировки UTF-8
- client.println();
- client.println("<html><body>");
- client.println("<h1>Рыбки покормлены</h1>");
- client.println("<p><a href='/'>Вернуться на главную</a></p>");
- client.println("</body></html>");
- }
Advertisement
Add Comment
Please, Sign In to add comment