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); | |
} |