Heater for threaded program

Dependents:   LEX_Threaded_Programming

Revision:
9:405e86b02d63
Parent:
8:5da71ae16115
--- a/Heater.cpp	Fri Jul 19 10:31:38 2019 +0000
+++ b/Heater.cpp	Fri Jul 19 14:27:26 2019 +0000
@@ -17,7 +17,7 @@
 
 
     
-Heater::Heater(int i_port, int v_port, DigitalOut drive, float corr_grad, float corr_int, float R_ref)
+Heater::Heater(int i_port, int v_port, PwmOut drive, float corr_grad, float corr_int, float R_ref)
     :R_ref(R_ref),i_port(i_port),v_port(v_port),drive(drive),corr_grad(corr_grad),corr_int(corr_int) {}
 
 float Heater::R_to_T(float R) {return R*corr_grad + corr_int;}
@@ -63,12 +63,10 @@
     while (timer.read_ms() < end_time)
     {
         read();
-        if (R > R_ref)
-        {
-            drive = 0;
-            wait_ms(10);  //Minimum duty cycle of 10%
-        }
-  
+        
+        drive.write(0.000000176*(R_ref - R));
+        wait_ms(2);
+
     }
 }
 
@@ -102,6 +100,6 @@
 float Heater::Get_R() {return R;}
 float Heater::Get_T() {return R_to_T(R);}
 
-void Heater::turn_on () {drive = 1;}
+void Heater::turn_on () {drive.write(0.1f);}
 
 void Heater::turn_off () {drive = 0;}
\ No newline at end of file