Example to sweep a servo through its range

Dependencies:   Servo mbed

Fork of Servo_HelloWorld by Simon Ford

Committer:
dreamworker
Date:
Tue Jul 14 14:16:12 2015 +0000
Revision:
2:da287ee6fb03
Parent:
1:40d2fd0b99e6
simple example of use of a servomotor controlled by Terminal.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreamworker 2:da287ee6fb03 1 // Servo Motor controlled with Terminal
simon 1:40d2fd0b99e6 2
simon 1:40d2fd0b99e6 3 #include "mbed.h"
simon 1:40d2fd0b99e6 4 #include "Servo.h"
simon 1:40d2fd0b99e6 5
dreamworker 2:da287ee6fb03 6 Serial pc(USBTX, USBRX);
dreamworker 2:da287ee6fb03 7 Servo myservo(D6);
dreamworker 2:da287ee6fb03 8 float angolo;
dreamworker 2:da287ee6fb03 9 int getangle(){
dreamworker 2:da287ee6fb03 10 printf("\n insert angle value to sweep with servo motor \n");
dreamworker 2:da287ee6fb03 11
dreamworker 2:da287ee6fb03 12 int numero = 0;
dreamworker 2:da287ee6fb03 13 int angle=0;
dreamworker 2:da287ee6fb03 14 int minus=0;
dreamworker 2:da287ee6fb03 15 int count = 0;
dreamworker 2:da287ee6fb03 16 char c=pc.getc();
dreamworker 2:da287ee6fb03 17 printf("\n angle: \t");
dreamworker 2:da287ee6fb03 18 int number[2]={0, 0};
dreamworker 2:da287ee6fb03 19 if(c=='-'){
dreamworker 2:da287ee6fb03 20 printf("-");
dreamworker 2:da287ee6fb03 21 minus=1;
dreamworker 2:da287ee6fb03 22 char c=pc.getc();
dreamworker 2:da287ee6fb03 23 angle = c -'0';
dreamworker 2:da287ee6fb03 24 printf("%d",angle);
dreamworker 2:da287ee6fb03 25 }
dreamworker 2:da287ee6fb03 26 else{
dreamworker 2:da287ee6fb03 27 angle = c -'0';
dreamworker 2:da287ee6fb03 28 printf("%d",angle);}
dreamworker 2:da287ee6fb03 29 while((count !=1) && (c!='\r')) {
simon 1:40d2fd0b99e6 30
dreamworker 2:da287ee6fb03 31 number[count]=angle;
dreamworker 2:da287ee6fb03 32 count++;
dreamworker 2:da287ee6fb03 33 c=pc.getc();
dreamworker 2:da287ee6fb03 34 if (c!='\r'){
dreamworker 2:da287ee6fb03 35 angle = c -'0';
dreamworker 2:da287ee6fb03 36 printf("%d",angle);}
dreamworker 2:da287ee6fb03 37 }
dreamworker 2:da287ee6fb03 38 if (c!='\r'){
dreamworker 2:da287ee6fb03 39 number[count]=angle;}
dreamworker 2:da287ee6fb03 40 else{number[1]=angle;
dreamworker 2:da287ee6fb03 41 number[0]=0;}
dreamworker 2:da287ee6fb03 42 numero = 10*number[0]+number[1];
dreamworker 2:da287ee6fb03 43 if(minus==0){
dreamworker 2:da287ee6fb03 44 return numero;}
dreamworker 2:da287ee6fb03 45 else{numero=-numero;
dreamworker 2:da287ee6fb03 46 return numero;}
dreamworker 2:da287ee6fb03 47 }
dreamworker 2:da287ee6fb03 48 int main() {
dreamworker 2:da287ee6fb03 49 printf("\033[2J");
dreamworker 2:da287ee6fb03 50 printf("\n*****************************************\n");
dreamworker 2:da287ee6fb03 51 printf("* Use key q to rotate at 90 degree *\n");
dreamworker 2:da287ee6fb03 52 printf("* Use key e to rotate at -90 degree *\n");
dreamworker 2:da287ee6fb03 53 printf("* Use key w to rotate at 0 degree *\n");
dreamworker 2:da287ee6fb03 54 printf("* Use key a to insert the sweep angle *\n");
dreamworker 2:da287ee6fb03 55 printf("*Use key s to rotate 1 degree at a time *\n");
dreamworker 2:da287ee6fb03 56 printf("*Use key d to rotate -1 degree at a time*\n");
dreamworker 2:da287ee6fb03 57 printf("*****************************************\n");
dreamworker 2:da287ee6fb03 58 myservo.calibrate(0.0008,90);
dreamworker 2:da287ee6fb03 59 while(1) {
dreamworker 2:da287ee6fb03 60 char c = pc.getc();
dreamworker 2:da287ee6fb03 61 if((c == 's') && (angolo < 90.0)) {
dreamworker 2:da287ee6fb03 62 angolo += 1;
dreamworker 2:da287ee6fb03 63 myservo.position(angolo);
dreamworker 2:da287ee6fb03 64 }
dreamworker 2:da287ee6fb03 65 if((c == 'd') && (angolo > -90.0)) {
dreamworker 2:da287ee6fb03 66 angolo -= 1;
dreamworker 2:da287ee6fb03 67 myservo.position(angolo);
dreamworker 2:da287ee6fb03 68 }
dreamworker 2:da287ee6fb03 69 if((c == 'q')) {
dreamworker 2:da287ee6fb03 70 angolo= 90;
dreamworker 2:da287ee6fb03 71 myservo.position(angolo);
dreamworker 2:da287ee6fb03 72 }
dreamworker 2:da287ee6fb03 73 if((c == 'w')) {
dreamworker 2:da287ee6fb03 74 angolo= 0;
dreamworker 2:da287ee6fb03 75 myservo.position(angolo);
dreamworker 2:da287ee6fb03 76 }
dreamworker 2:da287ee6fb03 77 if((c == 'e')) {
dreamworker 2:da287ee6fb03 78 angolo= -90;
dreamworker 2:da287ee6fb03 79 myservo.position(angolo);
dreamworker 2:da287ee6fb03 80 }
dreamworker 2:da287ee6fb03 81 if ((c == 'a')){
dreamworker 2:da287ee6fb03 82
dreamworker 2:da287ee6fb03 83 angolo = getangle();
dreamworker 2:da287ee6fb03 84 printf("\n Servo motor position:%f\n",angolo);
dreamworker 2:da287ee6fb03 85 myservo.position(angolo);
dreamworker 2:da287ee6fb03 86 }
dreamworker 2:da287ee6fb03 87 printf("\n Angle : %f", angolo);
dreamworker 2:da287ee6fb03 88
simon 1:40d2fd0b99e6 89 }
dreamworker 2:da287ee6fb03 90
dreamworker 2:da287ee6fb03 91
dreamworker 2:da287ee6fb03 92 }