/
spaceswimmer
/
perf-source
Обзор
Документация
Войти
/
spaceswimmer
/
perf-source
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
PerfSource/WebServer.cpp
165 строк
5 KB
spaceswimmer
master removed sleeping in loop
06 апр 2026, 11:56
06 апр 2026, 11:56
e32908d
Код
Авторство
О чём код?
#include "WebServer.h" #include "Config.h" #include "ControlPins.h" #include "Display.h" #include "Potentiometer.h" #include "Schedule.h" #include "WebPage.h" static bool webServerRoutesInitialized = false; void setupWebServer() { if (webServerRoutesInitialized) return; webServerRoutesInitialized = true; server.on("/", HTTP_GET, [](AsyncWebServerRequest* request) { request->send(200, "text/html", WEBPAGE_HTML); }); server.on("/config", HTTP_GET, [](AsyncWebServerRequest* request) { String json = "{"; json += "\"fmin\":" + String(fMin_display) + ","; json += "\"fmax\":" + String(fMax_display) + ","; json += "\"tmax\":" + String(tMax) + ","; json += "\"law\":\"" + law + "\""; json += "}"; request->send(200, "application/json", json); }); server.on("/set_params", HTTP_POST, [](AsyncWebServerRequest* request) { if (request->hasParam("fmin", true)) { int newFMin = request->getParam("fmin", true)->value().toInt(); int newFMax = request->getParam("fmax", true)->value().toInt(); float newTMax = request->getParam("tmax", true)->value().toFloat(); String newLaw = request->getParam("law", true)->value(); if (newFMin < 25) newFMin = 25; if (newFMax > 49) newFMax = 49; if (newTMax < 3) newTMax = 3; if (newTMax > 60) newTMax = 60; saveConfigIfNeeded(newFMin, newFMax, newTMax, newLaw); uint8_t pot_min = frequencyToPot(fMin_display); uint8_t pot_max = frequencyToPot(fMax_display); generateSchedule(pot_min, pot_max); displayParametersScreen(); Serial.print("Display F="); Serial.print(fMin_display); Serial.print("-"); Serial.print(fMax_display); Serial.print(" Hz -> Pot="); Serial.print(pot_min); Serial.print("-"); Serial.print(pot_max); Serial.print(" (Actual F="); Serial.print(potToFrequency(pot_min), 1); Serial.print("-"); Serial.print(potToFrequency(pot_max), 1); Serial.print(" Hz), T="); Serial.print(tMax); Serial.print(" s, Law="); Serial.println(law); request->send(200, "text/plain", "OK. Pot range: " + String(pot_min) + "-" + String(pot_max)); } else { request->send(400, "text/plain", "Missing params"); } }); server.on("/start", HTTP_POST, [](AsyncWebServerRequest* request) { startSweep(); request->send(200, "text/plain", "Sweep started"); }); server.on("/stop", HTTP_POST, [](AsyncWebServerRequest* request) { stopSweep(); request->send(200, "text/plain", "Sweep stopped"); }); server.on("/status", HTTP_GET, [](AsyncWebServerRequest* request) { String status = isRunning ? "Running: " + String(currentProgress, 1) + "%" : "Ready. Points: " + String(scheduleSize); request->send(200, "text/plain", status); }); } // === Функции запуска/остановки (вызываются из веб-сервера и кнопки) === void startSweep() { if (scheduleSize == 0) return; if (isRunning) return; isRunning = true; startTime = millis(); currentProgress = 0.0; currentPotValue = schedule[0].potValue; startPotValue = schedule[0].potValue; writePotentiometer(currentPotValue); lastWrittenPotValue = currentPotValue; triggerVoltagePulse(); setControlPins(true); // активируем пины Serial.print("Sweep started! Initial pot value: "); Serial.println(startPotValue); } void stopSweep() { if (!isRunning) return; isRunning = false; currentProgress = 0.0; setControlPins(false); // деактивируем пины triggerVoltagePulse("off"); if (startPotValue > 0) { writePotentiometer(startPotValue); currentPotValue = startPotValue; lastWrittenPotValue = startPotValue; Serial.print("Sweep stopped. Potentiometer reset to start value: "); Serial.println(startPotValue); } displayParametersScreen(); Serial.println("Sweep stopped by user"); } void enableWiFi() { if (wifiEnabled) return; WiFi.mode(WIFI_AP); bool apStarted = WiFi.softAP(ssid, password, 10, 0, 4); if (apStarted) { wifiEnabled = true; WiFi.setTxPower(WIFI_POWER_5dBm); dnsServer.start(53, "*", WiFi.softAPIP()); setupWebServer(); server.begin(); Serial.println("✅ Wi-Fi AP enabled!"); Serial.print(" SSID: "); Serial.println(ssid); Serial.print(" IP: "); Serial.println(WiFi.softAPIP()); } } void disableWiFi() { if (!wifiEnabled) return; server.end(); dnsServer.stop(); WiFi.softAPdisconnect(true); WiFi.mode(WIFI_OFF); wifiEnabled = false; Serial.println("❌ Wi-Fi AP disabled"); }