Spaces:
Running
Running
| class IdleController { | |
| private: | |
| float targetRPM; | |
| float currentPosition; | |
| unsigned long lastUpdateTime; | |
| bool isAirConditionerOn; | |
| float engineTemp; | |
| // ПИД-регулятор | |
| PIDController pid; | |
| // Указатель на объект управления двигателем для получения температуры | |
| EngineControl* engineControl; | |
| // Вспомогательные методы | |
| void updateValvePosition(float position); | |
| public: | |
| IdleController(); | |
| void begin(); | |
| void update(float currentRPM); | |
| // Методы для работы с целевыми оборотами | |
| void setTargetRPM(float rpm) { | |
| if (rpm >= 700 && rpm <= 2000) { | |
| targetRPM = rpm; | |
| pid.SetSetpoint(rpm); | |
| } | |
| } | |
| float getTargetRPM() const { return targetRPM; } | |
| // Методы для настройки ПИД | |
| void setPIDParameters(float kp, float ki, float kd) { | |
| pid.SetTunings(kp, ki, kd); | |
| } | |
| // Методы для управления положением | |
| void setPosition(float position) { updateValvePosition(position); } | |
| float getCurrentPosition() const { return currentPosition; } | |
| // Методы для работы с температурой и кондиционером | |
| void setEngineTemperature(float temp) { engineTemp = temp; } | |
| void setAirConditioner(bool isOn) { isAirConditionerOn = isOn; } | |
| // Метод для установки указателя на объект управления двигателем | |
| void setEngineControl(EngineControl* control) { engineControl = control; } | |
| }; | |