Servo Calibration with Max and Min calibration pionts

Dependencies:   Servo mbed

Fork of ServoProgram by Simon Ford

Revision:
1:e3c15c192f3d
Parent:
0:7b3eabfa1a0f
--- a/main.cpp	Tue May 18 19:40:18 2010 +0000
+++ b/main.cpp	Fri Nov 09 19:55:34 2012 +0000
@@ -1,27 +1,32 @@
-#include "mbed.h"
-#include "Servo.h"
-
-Servo myservo(p21);
-Serial pc(USBTX, USBRX);
-
-int main() {
-    printf("Servo Calibration Controls:\n");
-    printf("1,2,3 - Position Servo (full left, middle, full right)\n");
-    printf("4,5 - Decrease or Increase range\n");
-
-    float range = 0.0005;
-    float position = 0.5;
-    
-    while(1) {                   
-        switch(pc.getc()) {
-            case '1': position = 0.0; break;
-            case '2': position = 0.5; break;
-            case '3': position = 1.0; break;
-            case '4': range += 0.0001; break; 
-            case '5': range -= 0.0001; break; 
-        }
-        printf("position = %.1f, range = +/-%0.4f\n", position, range);
-        myservo.calibrate(range, 45.0); 
-        myservo = position;
-    }
-}
+#include "mbed.h"
+#include "Servo.h"
+
+Servo myservo(p23);
+Serial pc(USBTX, USBRX);
+
+int main() {
+    printf("Servo Calibration Controls:\n");
+    printf("1,2,3 - Position Servo (full left, middle, full right)\n");
+    printf("4,5 - Increase or Decrease Max position\n");
+    printf("6,7 - Increase or Decrease Min position\n");
+
+    float max = 0.0005;
+    float min = -0.0005;
+    float position = 0.5;
+    
+    while(1) {                   
+        switch(pc.getc()) {
+            case '1': position = 0.0; break;
+            case '2': position = 0.5; break;
+            case '3': position = 1.0; break;
+            case '4': max += 0.0001; break; 
+            case '5': max -= 0.0001; break; 
+            case '6': min += 0.0001; break; 
+            case '7': min -= 0.0001; break; 
+        }
+        printf("position = %.1f, max = %0.4f, min = %0.4f, range = %0.4f\n", position, max, min, (max + -min) / 2.0);
+        myservo.calibrate_max(max, 45.0); 
+        myservo.calibrate_min(min, 45.0);
+        myservo = position;
+    }
+}