Fabio Durigon
/
ServoTest
Sample program to demonstrate how to use DuryServo Library
Diff: main.cpp
- Revision:
- 0:0e4e520af2c1
diff -r 000000000000 -r 0e4e520af2c1 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jun 14 10:15:03 2013 +0000 @@ -0,0 +1,90 @@ +#include "mbed.h" +#include "Servo.h" + +void ShowMenu(void); + +Servo myservo(p22); +Serial pc(USBTX, USBRX); + +int main() { + + ShowMenu(); + + float pulsemin = myservo.ReadPulseMin(); + float pulsemax = myservo.ReadPulseMax(); + float degreesmin = myservo.ReadDegreesMin(); + float degreesmax = myservo.ReadDegreesMax(); + + while(1) { + float degrees=myservo.ReadDegrees(); + float position=myservo.Read(); + printf("read position = %f, read degrees = %f\r\n", position, degrees); + + switch(pc.getc()) { + case ' ': ShowMenu(); break; + case 'z': + printf("pulsemin = %f, degreesmin = %f, pulsemax = %f degreesmax = %f\r\n", pulsemin, degreesmin, pulsemax, degreesmax); + break; + case '1': myservo = 0.0; break; + case '2': myservo = 0.5; break; + case '3': myservo = 1.0; break; + case 'q': + pulsemin += 0.0001; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0; + printf("+pulsemin = %f, degreesmin = %f", pulsemin, degreesmin); + break; + case 'a': + pulsemin -= 0.0001; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0; + printf("-pulsemin = %f, degreesmin = %f", pulsemin, degreesmin); + break; + case 'w': + pulsemax += 0.0001; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0; + printf("+pulsemax = %f, degreesmax = %f", pulsemax, degreesmax); + break; + case 's': + pulsemax -= 0.0001; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0; + printf("-pulsemax = %f, degreesmax = %f", pulsemax, degreesmax); + break; + case 'e': + degreesmin += 1; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0; + printf("pulsemin = %f, +degreesmin = %f", pulsemin, degreesmin); + break; + case 'd': + degreesmin -= 1; myservo.DefinePulseMin(pulsemin,degreesmin); myservo = 0.0; + printf("pulsemin = %f, -degreesmin = %f", pulsemin, degreesmin); + break; + case 'r': + degreesmax += 1; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0; + printf("pulsemax = %f, +degreesmax = %f", pulsemax, degreesmax); + break; + case 'f': + degreesmax -= 1; myservo.DefinePulseMax(pulsemax,degreesmax); myservo = 1.0; + printf("pulsemax = %f, -degreesmax = %f", pulsemax, degreesmax); + break; + case '6': degrees += 5.0; myservo.WriteDegrees(degrees); break; + case '4': degrees -= 5.0; myservo.WriteDegrees(degrees); break; + case '5': degrees = 0.0; myservo.WriteDegrees(degrees); break; + } + + } +} + +void ShowMenu(void) +{ + printf("Servo Test and calibration:\r\n"); + printf("1,2,3 - Position Servo (full left, middle, full right)\r\n"); + + printf("q,a - Decrease or Increase pulsemin using pulse value\r\n"); + printf("w,s - Decrease or Increase pulsemax using pluse value\r\n"); + printf("e,d - Decrease or Increase pulsemin using degree value\r\n"); + printf("r,f - Decrease or Increase pulsemax using degree value\r\n"); + + printf("6,4 - Degrees +5 -5\r\n"); + printf("5 - Degrees = 0.0 \r\n"); + printf("SPACE - Show this menu\r\n"); + printf("z - Print Servo Values\r\n"); + printf("\r\nInstructions:\r\n"); + printf("Decrease pulsemin until the servo reach the full left position\r\n" + "Decrease degreesmin until the value reach the correct degrees you see\r\n" + "Increase pulsemin until the servo reach the full right position\r\n" + "Increase degreesmin until the value reach the correct degrees you see\r\n"); +} \ No newline at end of file