Skip to content

Commit cf0cae8

Browse files
authored
Merge pull request #5 from LexxPluss/4_Fan-Control
4 fan control
2 parents 396a64a + 50332fa commit cf0cae8

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

lexxpluss_main.cpp

+34
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,34 @@ class led_controller {
9696
bool charging{false};
9797
};
9898

99+
100+
class fan_controller {
101+
public:
102+
void init() const{
103+
pinMode(PIN_FAN, OUTPUT);
104+
analogWrite(PIN_FAN, 0);
105+
}
106+
void poll() {
107+
if(charging != prev)
108+
{
109+
if (charging) {
110+
analogWrite(PIN_FAN, 255);
111+
} else {
112+
analogWrite(PIN_FAN, 0);
113+
}
114+
}
115+
prev = charging;
116+
}
117+
void set_charging(bool enable) {
118+
this->charging = enable;
119+
}
120+
121+
private:
122+
bool charging{false};
123+
static constexpr uint8_t PIN_FAN{4};
124+
bool prev{false};
125+
};
126+
99127
class manual_switch {
100128
public:
101129
enum class STATE {
@@ -224,11 +252,13 @@ class power_controller {
224252
void init() {
225253
led.init();
226254
relay.init();
255+
fan.init();
227256
heartbeat_timer.start();
228257
}
229258
void poll() {
230259
led.poll();
231260
terminal.poll();
261+
fan.poll();
232262
if (relay.is_auto_mode()) {
233263
auto elapsed_ms{heartbeat_timer.read_ms()};
234264
if (elapsed_ms > 10000) {
@@ -256,15 +286,18 @@ class power_controller {
256286
if (enable && !terminal.is_overheat()) {
257287
relay.set_enable(true, CHARGING_MODE::AUTO);
258288
led.set_charging(true, level);
289+
fan.set_charging(true);
259290
} else {
260291
relay.set_enable(false);
261292
led.set_charging(false);
293+
fan.set_charging(false);
262294
}
263295
}
264296
}
265297
void set_manual_enable(bool enable) {
266298
relay.set_enable(enable);
267299
led.set_charging(enable);
300+
fan.set_charging(enable);
268301
if (enable) {
269302
manual_charging_timer.reset();
270303
manual_charging_timer.start();
@@ -282,6 +315,7 @@ class power_controller {
282315
private:
283316
led_controller led;
284317
relay_controller relay;
318+
fan_controller fan;
285319
power_terminal terminal;
286320
simpletimer heartbeat_timer, manual_charging_timer;
287321
};

0 commit comments

Comments
 (0)