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