Austin Sloop
/
AustinSloop_MiniProject_ServoControl
3 button servo control for HS422 with mbed
main.cpp@0:c21f0ed70bcd, 2016-01-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |