3 button servo control for HS422 with mbed

Dependencies:   mbed

Committer:
asloop18
Date:
Thu Jan 07 23:28:22 2016 +0000
Revision:
0:c21f0ed70bcd
Child:
1:a00c2b3c73e8
trial one, with switching;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asloop18 0:c21f0ed70bcd 1 /* Servo controller mini-project. Three button control for HS422 servo, left 10*, right 10*, reset to center.
asloop18 0:c21f0ed70bcd 2 Austin Sloop, 1/7/16
asloop18 0:c21f0ed70bcd 3 */
asloop18 0:c21f0ed70bcd 4
asloop18 0:c21f0ed70bcd 5 #include "mbed.h"
asloop18 0:c21f0ed70bcd 6
asloop18 0:c21f0ed70bcd 7 DigitalIn right(p5); //Right button, CW
asloop18 0:c21f0ed70bcd 8 DigitalIn left(p9); //Left button, CCW
asloop18 0:c21f0ed70bcd 9 DigitalIn reset(p7); //Middle button, reset to 0
asloop18 0:c21f0ed70bcd 10
asloop18 0:c21f0ed70bcd 11 PwmOut servo(p21); //Servo Control
asloop18 0:c21f0ed70bcd 12 DigitalOut L(LED1);
asloop18 0:c21f0ed70bcd 13 DigitalOut R(LED3); //Debugging Purposes
asloop18 0:c21f0ed70bcd 14 DigitalOut C(LED2);
asloop18 0:c21f0ed70bcd 15
asloop18 0:c21f0ed70bcd 16 char a; //value of switching
asloop18 0:c21f0ed70bcd 17 int i=1500; //value of servo position
asloop18 0:c21f0ed70bcd 18 int main(){
asloop18 0:c21f0ed70bcd 19 servo.period(0.020);
asloop18 0:c21f0ed70bcd 20 while(1){
asloop18 0:c21f0ed70bcd 21 if (right==1){
asloop18 0:c21f0ed70bcd 22 a=3;
asloop18 0:c21f0ed70bcd 23 R=1;
asloop18 0:c21f0ed70bcd 24 wait(.5);
asloop18 0:c21f0ed70bcd 25 R=0;
asloop18 0:c21f0ed70bcd 26 }
asloop18 0:c21f0ed70bcd 27 if (left==1) {
asloop18 0:c21f0ed70bcd 28 a=1;
asloop18 0:c21f0ed70bcd 29 L=1;
asloop18 0:c21f0ed70bcd 30 wait(1);
asloop18 0:c21f0ed70bcd 31 L=0;
asloop18 0:c21f0ed70bcd 32 }
asloop18 0:c21f0ed70bcd 33 if (reset==1) {
asloop18 0:c21f0ed70bcd 34 a=2;
asloop18 0:c21f0ed70bcd 35 C=1;
asloop18 0:c21f0ed70bcd 36 wait(1);
asloop18 0:c21f0ed70bcd 37 C=0;
asloop18 0:c21f0ed70bcd 38 }
asloop18 0:c21f0ed70bcd 39
asloop18 0:c21f0ed70bcd 40 switch(a){
asloop18 0:c21f0ed70bcd 41 case 0: break;
asloop18 0:c21f0ed70bcd 42 case 1: i=i-100; break; //CCW 10
asloop18 0:c21f0ed70bcd 43 case 2: i=1500; break; //Reset 0
asloop18 0:c21f0ed70bcd 44 case 3: i=i+100; break; //CW 10
asloop18 0:c21f0ed70bcd 45 }
asloop18 0:c21f0ed70bcd 46 servo.pulsewidth_us(i);
asloop18 0:c21f0ed70bcd 47 wait(1);
asloop18 0:c21f0ed70bcd 48 a=0;
asloop18 0:c21f0ed70bcd 49
asloop18 0:c21f0ed70bcd 50 }
asloop18 0:c21f0ed70bcd 51 }