Sample program to demonstrate how to use DuryServo Library

Dependencies:   DuryServo mbed

Committer:
dury
Date:
Fri Jun 14 10:15:03 2013 +0000
Revision:
0:0e4e520af2c1
Sample program to demonstrate how to use DuryServo Library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dury 0:0e4e520af2c1 1 #include "mbed.h"
dury 0:0e4e520af2c1 2 #include "Servo.h"
dury 0:0e4e520af2c1 3
dury 0:0e4e520af2c1 4 void ShowMenu(void);
dury 0:0e4e520af2c1 5
dury 0:0e4e520af2c1 6 Servo myservo(p22);
dury 0:0e4e520af2c1 7 Serial pc(USBTX, USBRX);
dury 0:0e4e520af2c1 8
dury 0:0e4e520af2c1 9 int main() {
dury 0:0e4e520af2c1 10
dury 0:0e4e520af2c1 11 ShowMenu();
dury 0:0e4e520af2c1 12
dury 0:0e4e520af2c1 13 float pulsemin = myservo.ReadPulseMin();
dury 0:0e4e520af2c1 14 float pulsemax = myservo.ReadPulseMax();
dury 0:0e4e520af2c1 15 float degreesmin = myservo.ReadDegreesMin();
dury 0:0e4e520af2c1 16 float degreesmax = myservo.ReadDegreesMax();
dury 0:0e4e520af2c1 17
dury 0:0e4e520af2c1 18 while(1) {
dury 0:0e4e520af2c1 19 float degrees=myservo.ReadDegrees();
dury 0:0e4e520af2c1 20 float position=myservo.Read();
dury 0:0e4e520af2c1 21 printf("read position = %f, read degrees = %f\r\n", position, degrees);
dury 0:0e4e520af2c1 22
dury 0:0e4e520af2c1 23 switch(pc.getc()) {
dury 0:0e4e520af2c1 24 case ' ': ShowMenu(); break;
dury 0:0e4e520af2c1 25 case 'z':
dury 0:0e4e520af2c1 26 printf("pulsemin = %f, degreesmin = %f, pulsemax = %f degreesmax = %f\r\n", pulsemin, degreesmin, pulsemax, degreesmax);
dury 0:0e4e520af2c1 27 break;
dury 0:0e4e520af2c1 28 case '1': myservo = 0.0; break;
dury 0:0e4e520af2c1 29 case '2': myservo = 0.5; break;
dury 0:0e4e520af2c1 30 case '3': myservo = 1.0; break;
dury 0:0e4e520af2c1 31 case 'q':
dury 0:0e4e520af2c1 32 pulsemin += 0.0001; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0;
dury 0:0e4e520af2c1 33 printf("+pulsemin = %f, degreesmin = %f", pulsemin, degreesmin);
dury 0:0e4e520af2c1 34 break;
dury 0:0e4e520af2c1 35 case 'a':
dury 0:0e4e520af2c1 36 pulsemin -= 0.0001; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0;
dury 0:0e4e520af2c1 37 printf("-pulsemin = %f, degreesmin = %f", pulsemin, degreesmin);
dury 0:0e4e520af2c1 38 break;
dury 0:0e4e520af2c1 39 case 'w':
dury 0:0e4e520af2c1 40 pulsemax += 0.0001; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0;
dury 0:0e4e520af2c1 41 printf("+pulsemax = %f, degreesmax = %f", pulsemax, degreesmax);
dury 0:0e4e520af2c1 42 break;
dury 0:0e4e520af2c1 43 case 's':
dury 0:0e4e520af2c1 44 pulsemax -= 0.0001; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0;
dury 0:0e4e520af2c1 45 printf("-pulsemax = %f, degreesmax = %f", pulsemax, degreesmax);
dury 0:0e4e520af2c1 46 break;
dury 0:0e4e520af2c1 47 case 'e':
dury 0:0e4e520af2c1 48 degreesmin += 1; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0;
dury 0:0e4e520af2c1 49 printf("pulsemin = %f, +degreesmin = %f", pulsemin, degreesmin);
dury 0:0e4e520af2c1 50 break;
dury 0:0e4e520af2c1 51 case 'd':
dury 0:0e4e520af2c1 52 degreesmin -= 1; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0;
dury 0:0e4e520af2c1 53 printf("pulsemin = %f, -degreesmin = %f", pulsemin, degreesmin);
dury 0:0e4e520af2c1 54 break;
dury 0:0e4e520af2c1 55 case 'r':
dury 0:0e4e520af2c1 56 degreesmax += 1; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0;
dury 0:0e4e520af2c1 57 printf("pulsemax = %f, +degreesmax = %f", pulsemax, degreesmax);
dury 0:0e4e520af2c1 58 break;
dury 0:0e4e520af2c1 59 case 'f':
dury 0:0e4e520af2c1 60 degreesmax -= 1; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0;
dury 0:0e4e520af2c1 61 printf("pulsemax = %f, -degreesmax = %f", pulsemax, degreesmax);
dury 0:0e4e520af2c1 62 break;
dury 0:0e4e520af2c1 63 case '6': degrees += 5.0; myservo.WriteDegrees(degrees); break;
dury 0:0e4e520af2c1 64 case '4': degrees -= 5.0; myservo.WriteDegrees(degrees); break;
dury 0:0e4e520af2c1 65 case '5': degrees = 0.0; myservo.WriteDegrees(degrees); break;
dury 0:0e4e520af2c1 66 }
dury 0:0e4e520af2c1 67
dury 0:0e4e520af2c1 68 }
dury 0:0e4e520af2c1 69 }
dury 0:0e4e520af2c1 70
dury 0:0e4e520af2c1 71 void ShowMenu(void)
dury 0:0e4e520af2c1 72 {
dury 0:0e4e520af2c1 73 printf("Servo Test and calibration:\r\n");
dury 0:0e4e520af2c1 74 printf("1,2,3 - Position Servo (full left, middle, full right)\r\n");
dury 0:0e4e520af2c1 75
dury 0:0e4e520af2c1 76 printf("q,a - Decrease or Increase pulsemin using pulse value\r\n");
dury 0:0e4e520af2c1 77 printf("w,s - Decrease or Increase pulsemax using pluse value\r\n");
dury 0:0e4e520af2c1 78 printf("e,d - Decrease or Increase pulsemin using degree value\r\n");
dury 0:0e4e520af2c1 79 printf("r,f - Decrease or Increase pulsemax using degree value\r\n");
dury 0:0e4e520af2c1 80
dury 0:0e4e520af2c1 81 printf("6,4 - Degrees +5 -5\r\n");
dury 0:0e4e520af2c1 82 printf("5 - Degrees = 0.0 \r\n");
dury 0:0e4e520af2c1 83 printf("SPACE - Show this menu\r\n");
dury 0:0e4e520af2c1 84 printf("z - Print Servo Values\r\n");
dury 0:0e4e520af2c1 85 printf("\r\nInstructions:\r\n");
dury 0:0e4e520af2c1 86 printf("Decrease pulsemin until the servo reach the full left position\r\n"
dury 0:0e4e520af2c1 87 "Decrease degreesmin until the value reach the correct degrees you see\r\n"
dury 0:0e4e520af2c1 88 "Increase pulsemin until the servo reach the full right position\r\n"
dury 0:0e4e520af2c1 89 "Increase degreesmin until the value reach the correct degrees you see\r\n");
dury 0:0e4e520af2c1 90 }