 void loop()
 {
 	sampleTimeLeft = sampleTime - millis();
+  printTimeLeft = printTime - millis();
 	heaterOnTimeLeft = heaterOnTime - millis();
 	heaterPeriodTimeLeft = heaterPeriodTime - millis();
 
 	if (sampleTimeLeft < 0)
 	{
 		tempAvg.push(getTemperature());
-		printData(&pid);
 		sampleTime = millis() + SAMPLE_DELAY_MS;
 	}
+
+  if (printTimeLeft < 0)
+  {
+    printData(&pid);
+    printTime = millis() + PRINT_DELAY_MS;
+  }
 
 	if (heaterOnTimeLeft < 0 && heaterIsOn)
 		heaterOff();

  if (sampleTimeLeft < 0)
  {
    tempAvg.push(getTemperature());
    printData(&pid);
    sampleTime = millis() + SAMPLE_DELAY_MS;
  }

  if (heaterOnTimeLeft < 0 && heaterIsOn)

#define TEMP_TO_DUTY_SLOPE 0.1
#define TEMP_TO_DUTY_OFFSET 0.0

//#define DRIVE_MAX 100
//#define DRIVE_MIN 10

struct SPid
{
