Recursion 12.2

Dependencies:   SLCD TSI mbed

Fork of kl46z_slider_mid_v1_amart by AnnaLouise Martinez

Revision:
2:bb868c525c5c
Parent:
1:44dcf262c7dd
Child:
3:2bb5ccf119fc
--- a/main.cpp	Sat Oct 01 22:10:10 2016 +0000
+++ b/main.cpp	Mon Oct 10 04:04:39 2016 +0000
@@ -15,7 +15,7 @@
 #define LCDCHARLEN 10
 #define DATAINTERVAL 0.1
 #define BUTTONTIME 0.1
-#define PROGNAME "kl46z_slider_mid_v1\n\r"
+#define PROGNAME "SquareRootMidterm_AnnaLouise Martinez\n\r"
 
 SLCD slcd; //define LCD display
 Serial pc(USBTX, USBRX);
@@ -41,6 +41,35 @@
         slcd.printf(lMess);
 }
 
+float sqroot(float tsiData)
+{
+ // Newton's method for square root
+    float xnew = 0.0;
+    int intmax = 20;
+    float epsilon = 1e-7;
+    float xold = float(tsiData/2.5);
+    
+    for(int i =0; i< intmax; i++)
+    {
+        xnew = 0.5*(xold + ((tsiData)/xold)); // Calculation
+       float delta = abs(xnew-xold); // Compare old and new values
+        
+        if (delta < epsilon) //Check for convergence
+           { 
+                break;
+           }
+        else
+           {
+                xold = xnew;  //replace new calculated value to redo the calculation
+           }
+    }
+    //float newtsiData = tsiData * 100;
+    pc.printf("The square root of ");
+    pc.printf("%0.4f", tsiData);
+    pc.printf("  is %0.4f\n\r", xnew);
+    return xnew;    
+}
+
 int main(void) {
     int i;
     char lcdData[LCDCHARLEN];
@@ -66,15 +95,16 @@
             LCDMess(lcdData); 
             rled = 0.0;
             gled = 1.0;
-            
         }
+        
         if(dataTimer.read() > DATAINTERVAL){
             dataTimer.reset();                               
-            tempTSI = tsi.readPercentage();        
+            tempTSI = tsi.readPercentage();      
             if (tempTSI > TSILIMIT){
                 tsidata = tempTSI;
                 if (fabs(tsidata - lastTouch)> PRINTDELTA){
                     pc.printf("Position %0.4f\n\r", tsidata);
+                    float sqrt = sqroot(tsidata * 100); 
                 }           
             }
             lastTouch=tsidata;