diff --git a/lib/oven.py b/lib/oven.py index fadd42d..c5097ab 100644 --- a/lib/oven.py +++ b/lib/oven.py @@ -101,6 +101,7 @@ class Oven (threading.Thread): def run(self): temperature_count = 0 last_temp = 0 + pid = 0 while True: self.door = self.get_door_state() @@ -132,8 +133,11 @@ class Oven (threading.Thread): self.reset() else: temperature_count = 0 + + #Capture the last temperature value. This must be done before set_heat, since there is a sleep in there now. + last_temp = self.temp_sensor.temperature - self.set_heat(pid > 0) + self.set_heat(pid) #if self.profile.is_rising(self.runtime): # self.set_cool(False) @@ -150,19 +154,24 @@ class Oven (threading.Thread): if self.runtime >= self.totaltime: self.reset() - #Capture the last temperature value - last_temp = self.temp_sensor.temperature - - time.sleep(self.time_step) + + if pid > 0: + time.sleep(self.time_step * (1 - pid)) + else: + time.sleep(self.time_step) def set_heat(self, value): - if value: + if value > 0: self.heat = 1.0 if gpio_available: if config.heater_invert: GPIO.output(config.gpio_heat, GPIO.LOW) + time.sleep(self.time_step * value) + GPIO.output(config.gpio_heat, GPIO.HIGH) else: GPIO.output(config.gpio_heat, GPIO.HIGH) + time.sleep(self.time_step * value) + GPIO.output(config.gpio_heat, GPIO.LOW) else: self.heat = 0.0 if gpio_available: