-
Notifications
You must be signed in to change notification settings - Fork 0
/
TempRegulator.h
58 lines (55 loc) · 1.13 KB
/
TempRegulator.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#pragma once
// Project headers
#include "schematic.h"
#include "settings.h"
// HAL headers
#include "HAL_ADC.h"
#include "HAL_PWM.h"
#include "HAL_Timer.h"
// Device headers
#include "LED.h"
class TempRegulator{
public:
private:
// HAL classes
HAL_Timer &Timer;
HAL_ADC Adc;
HAL_PWM Pwm;
// Device classes
LED DBG_LED;
// Data
bool enable;
float temperature; // temperature, in celsius
int target_duty_cycle; // desired duty cycle
int current_duty_cycle; // actual duty cycle
unsigned long last_time; // last time run, in ms
public:
TempRegulator(HAL_Timer &Timer_r);
void regulate();
// enable or disable regulator
void enable_regulation(){
enable = true;
}
void disable_regulation(){
enable = false;
}
bool is_enabled(){
return enable;
}
// duty cycle
int set_duty_cycle(int val){
// update target_duty_cycle
// update PWM output
// return current duty cycle
target_duty_cycle = val;
current_duty_cycle = Pwm.set_duty_cycle(target_duty_cycle);
return current_duty_cycle;
}
int get_duty_cycle(){
return current_duty_cycle;
}
// temperature
float get_temp(){
return temperature;
}
};