This repository has been archived on 2025-02-01. You can view files and clone it, but cannot push or open issues or pull requests.
reprapfirmware-dc42/Heat.h
2013-11-13 23:23:31 +00:00

164 lines
3.1 KiB
C++

/****************************************************************************************************
RepRapFirmware - Heat
This is all the code to deal with heat and temperature.
-----------------------------------------------------------------------------------------------------
Version 0.1
18 November 2012
Adrian Bowyer
RepRap Professional Ltd
http://reprappro.com
Licence: GPL
****************************************************************************************************/
#ifndef HEAT_H
#define HEAT_H
class PID
{
public:
PID(Platform* p, int8_t h);
void Init();
void Spin();
void SetActiveTemperature(const float& t);
float GetActiveTemperature();
void SetStandbyTemperature(const float& t);
float GetStandbyTemperature();
void Activate();
void Standby();
bool Active();
float GetTemperature();
private:
Platform* platform;
float activeTemperature;
float standbyTemperature;
float temperature;
float lastTemperature;
float temp_iState;
float temp_dState;
bool active;
int8_t heater;
int8_t badTemperatureCount;
bool temperatureFault;
};
class Heat
{
public:
Heat(Platform* p, GCodes* g);
void Spin();
void Init();
void Exit();
void SetActiveTemperature(int8_t heater, const float& t);
float GetActiveTemperature(int8_t heater);
void SetStandbyTemperature(int8_t heater, const float& t);
float GetStandbyTemperature(int8_t heater);
void Activate(int8_t heater);
void Standby(int8_t heater);
float GetTemperature(int8_t heater);
bool AllHeatersAtSetTemperatures();
void Diagnostics();
private:
Platform* platform;
GCodes* gCodes;
bool active;
PID* pids[HEATERS];
float lastTime;
float longWait;
};
//***********************************************************************************************************
inline bool PID::Active()
{
return active;
}
inline void PID::SetActiveTemperature(const float& t)
{
activeTemperature = t;
}
inline float PID::GetActiveTemperature()
{
return activeTemperature;
}
inline void PID::SetStandbyTemperature(const float& t)
{
standbyTemperature = t;
}
inline float PID::GetStandbyTemperature()
{
return standbyTemperature;
}
inline float PID::GetTemperature()
{
return temperature;
}
inline void PID::Activate()
{
active = true;
}
inline void PID::Standby()
{
active = false;
}
inline void Heat::SetActiveTemperature(int8_t heater, const float& t)
{
pids[heater]->SetActiveTemperature(t);
}
inline float Heat::GetActiveTemperature(int8_t heater)
{
return pids[heater]->GetActiveTemperature();
}
inline void Heat::SetStandbyTemperature(int8_t heater, const float& t)
{
pids[heater]->SetStandbyTemperature(t);
}
inline float Heat::GetStandbyTemperature(int8_t heater)
{
return pids[heater]->GetStandbyTemperature();
}
inline float Heat::GetTemperature(int8_t heater)
{
return pids[heater]->GetTemperature();
}
inline void Heat::Activate(int8_t heater)
{
pids[heater]->Activate();
}
inline void Heat::Standby(int8_t heater)
{
pids[heater]->Standby();
}
#endif