its a leap based haptic arm robot

Dependencies:   Servo mbed

Committer:
dvpavan153
Date:
Tue May 02 15:35:16 2017 +0000
Revision:
0:378e6e4342e9
leap based haptic arm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dvpavan153 0:378e6e4342e9 1 #include"mbed.h"
dvpavan153 0:378e6e4342e9 2 #include "Servo.h"
dvpavan153 0:378e6e4342e9 3
dvpavan153 0:378e6e4342e9 4 Servo myservo1(PTD0);
dvpavan153 0:378e6e4342e9 5 Servo myservo2(PTD2);
dvpavan153 0:378e6e4342e9 6 Servo myservo3(PTD3);
dvpavan153 0:378e6e4342e9 7 #include <stdio.h>
dvpavan153 0:378e6e4342e9 8 #include <string.h>
dvpavan153 0:378e6e4342e9 9 Serial pc(USBTX, USBRX);
dvpavan153 0:378e6e4342e9 10 Serial device(PTC15, PTC14);
dvpavan153 0:378e6e4342e9 11 float map(float in, float inMin, float inMax, float outMin, float outMax) ;
dvpavan153 0:378e6e4342e9 12 int main ()
dvpavan153 0:378e6e4342e9 13 {
dvpavan153 0:378e6e4342e9 14 device.baud(9600);
dvpavan153 0:378e6e4342e9 15 char buf[17];
dvpavan153 0:378e6e4342e9 16 while(1)
dvpavan153 0:378e6e4342e9 17 {
dvpavan153 0:378e6e4342e9 18 if (device.readable())
dvpavan153 0:378e6e4342e9 19 {
dvpavan153 0:378e6e4342e9 20
dvpavan153 0:378e6e4342e9 21 device.gets(buf,17);
dvpavan153 0:378e6e4342e9 22
dvpavan153 0:378e6e4342e9 23 int i ;
dvpavan153 0:378e6e4342e9 24 char *p = strtok (buf, ":");
dvpavan153 0:378e6e4342e9 25 char *array[3];
dvpavan153 0:378e6e4342e9 26
dvpavan153 0:378e6e4342e9 27
dvpavan153 0:378e6e4342e9 28 while (p != NULL)
dvpavan153 0:378e6e4342e9 29 {
dvpavan153 0:378e6e4342e9 30 array[i++] = p;
dvpavan153 0:378e6e4342e9 31 p = strtok (NULL, ":");
dvpavan153 0:378e6e4342e9 32 }
dvpavan153 0:378e6e4342e9 33
dvpavan153 0:378e6e4342e9 34 float x,y,z;
dvpavan153 0:378e6e4342e9 35 x = atof(array[0]);
dvpavan153 0:378e6e4342e9 36 y = atof(array[1]);
dvpavan153 0:378e6e4342e9 37 z = atof(array[2]);
dvpavan153 0:378e6e4342e9 38
dvpavan153 0:378e6e4342e9 39 printf("x=%4f\n",x);
dvpavan153 0:378e6e4342e9 40 printf("y=%4f\n",y);
dvpavan153 0:378e6e4342e9 41 printf("z=%4f\n",z);
dvpavan153 0:378e6e4342e9 42 float middle = map ( x,165.0,340.0,0.0,180.0);
dvpavan153 0:378e6e4342e9 43 float bottom = map ( y,65.0,-85.0,0.0,180.0);
dvpavan153 0:378e6e4342e9 44 float top= map ( z,0.0,120.0,0.0,180.0);
dvpavan153 0:378e6e4342e9 45
dvpavan153 0:378e6e4342e9 46 printf("%f\n",middle);
dvpavan153 0:378e6e4342e9 47 myservo1 = int(middle);
dvpavan153 0:378e6e4342e9 48 printf("%f\n",bottom);
dvpavan153 0:378e6e4342e9 49 myservo2 = int(bottom);
dvpavan153 0:378e6e4342e9 50 printf("%f\n",top);
dvpavan153 0:378e6e4342e9 51 myservo3 = int(top);
dvpavan153 0:378e6e4342e9 52
dvpavan153 0:378e6e4342e9 53
dvpavan153 0:378e6e4342e9 54
dvpavan153 0:378e6e4342e9 55 }
dvpavan153 0:378e6e4342e9 56 }
dvpavan153 0:378e6e4342e9 57
dvpavan153 0:378e6e4342e9 58 }
dvpavan153 0:378e6e4342e9 59 float map(float in, float inMin, float inMax, float outMin, float outMax) {
dvpavan153 0:378e6e4342e9 60 // check it's within the range
dvpavan153 0:378e6e4342e9 61 if (inMin<inMax) {
dvpavan153 0:378e6e4342e9 62 if (in <= inMin)
dvpavan153 0:378e6e4342e9 63 return outMin;
dvpavan153 0:378e6e4342e9 64 if (in >= inMax)
dvpavan153 0:378e6e4342e9 65 return outMax;
dvpavan153 0:378e6e4342e9 66 } else { // cope with input range being backwards.
dvpavan153 0:378e6e4342e9 67 if (in >= inMin)
dvpavan153 0:378e6e4342e9 68 return outMin;
dvpavan153 0:378e6e4342e9 69 if (in <= inMax)
dvpavan153 0:378e6e4342e9 70 return outMax;
dvpavan153 0:378e6e4342e9 71 }
dvpavan153 0:378e6e4342e9 72 // calculate how far into the range we are
dvpavan153 0:378e6e4342e9 73 float scale = (in-inMin)/(inMax-inMin);
dvpavan153 0:378e6e4342e9 74 // calculate the output.
dvpavan153 0:378e6e4342e9 75 return outMin + scale*(outMax-outMin);
dvpavan153 0:378e6e4342e9 76 }
dvpavan153 0:378e6e4342e9 77
dvpavan153 0:378e6e4342e9 78
dvpavan153 0:378e6e4342e9 79
dvpavan153 0:378e6e4342e9 80