diff --git a/cnc/config.py b/cnc/config.py index 3c205ac..6e41c7d 100644 --- a/cnc/config.py +++ b/cnc/config.py @@ -89,3 +89,6 @@ INSTANT_RUN = True # velocity would be decreased(proportional for all axises) to fit the maximum # velocity. AUTO_VELOCITY_ADJUSTMENT = True + +# Automatically turn on fan when extruder is heating, boolean value. +AUTO_FAN_ON = True diff --git a/cnc/gmachine.py b/cnc/gmachine.py index 5db3f45..6403ced 100644 --- a/cnc/gmachine.py +++ b/cnc/gmachine.py @@ -18,6 +18,8 @@ class GMachine(object): """ Main object which control and keep state of whole machine: steppers, spindle, extruder etc """ + AUTO_FAN_ON = AUTO_FAN_ON + def __init__(self): """ Initialization. """ @@ -85,6 +87,8 @@ class GMachine(object): self._heaters[heater].stop() del self._heaters[heater] if temperature != 0: + if heater == HEATER_EXTRUDER and self.AUTO_FAN_ON: + self._fan(True) self._heaters[heater] = Heater(temperature, coefficients, measure, control) if wait: diff --git a/tests/test_gmachine.py b/tests/test_gmachine.py index 901ec56..8efc0e1 100644 --- a/tests/test_gmachine.py +++ b/tests/test_gmachine.py @@ -268,6 +268,15 @@ class TestGMachine(unittest.TestCase): self.assertTrue(m.fan_state()) m.do_command(GCode.parse_line("M107")) self.assertFalse(m.fan_state()) + # check auto fan feature + m.AUTO_FAN_ON = True + m.do_command(GCode.parse_line("M104S" + str(MIN_TEMPERATURE))) + self.assertTrue(m.fan_state()) + m.do_command(GCode.parse_line("M104S0")) + self.assertTrue(m.fan_state()) + m.do_command(GCode.parse_line("M107")) + self.assertFalse(m.fan_state()) + m.AUTO_FAN_ON = False def test_m140_m190(self): m = GMachine()