Spaces:
Running
Running
| // Создаем объекты | |
| EngineControl engineControl; | |
| IdleController idleControl; | |
| SettingsManager settingsManager; | |
| WebServer server(80); | |
| void handleStatus() { | |
| StaticJsonDocument<512> doc; | |
| doc["rpm"] = engineControl.getRPM(); | |
| doc["map"] = engineControl.getMAP(); | |
| doc["tps"] = engineControl.getTPS(); | |
| doc["lambda"] = engineControl.getLambda(); | |
| doc["knock_level"] = engineControl.knockLevel; | |
| doc["knock_events"] = engineControl.getKnockEvents(); | |
| doc["fuel_correction"] = engineControl.getCurrentFuelCorrection(); | |
| doc["ignition_correction"] = engineControl.getCurrentIgnitionCorrection(); | |
| doc["engine_temp"] = engineControl.getEngineTemp(); | |
| doc["voltage"] = engineControl.getVoltage(); | |
| doc["learning_enabled"] = engineControl.isLearningEnabled(); | |
| String response; | |
| serializeJson(doc, response); | |
| server.send(200, "application/json", response); | |
| } | |
| void handleIdleRPM() { | |
| if (server.hasArg("rpm")) { | |
| int rpm = server.arg("rpm").toInt(); | |
| if (rpm >= 700 && rpm <= 2000) { | |
| idleControl.setTargetRPM(rpm); | |
| server.send(200, "text/plain", "OK"); | |
| return; | |
| } | |
| } | |
| server.send(400, "text/plain", "Invalid RPM value"); | |
| } | |
| void setup() { | |
| Serial.begin(115200); | |
| // Устанавливаем связь между объектами | |
| idleControl.setEngineControl(&engineControl); | |
| // Инициализация компонентов | |
| engineControl.begin(); | |
| idleControl.begin(); | |
| // Настройка WiFi | |
| WiFi.softAP("ECU_Config", "12345678"); | |
| // Настройка веб-сервера | |
| server.on("/status", HTTP_GET, handleStatus); | |
| server.on("/idle_rpm", HTTP_POST, handleIdleRPM); | |
| server.begin(); | |
| } | |
| void loop() { | |
| // Обработка веб-запросов | |
| server.handleClient(); | |
| // Обновление состояния двигателя | |
| engineControl.update(); | |
| // Обновление РХХ | |
| if (engineControl.getRPM() > 0) { | |
| idleControl.update(engineControl.getRPM()); | |
| } | |
| // Задержка для стабильной работы | |
| delay(10); | |
| } |