![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
VEX robotics 393 motor control test
main.cpp@0:1719fc9a160e, 2014-01-28 (annotated)
- Committer:
- dbearg
- Date:
- Tue Jan 28 20:25:41 2014 +0000
- Revision:
- 0:1719fc9a160e
- Child:
- 1:c41ae3b710a2
test of program publish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dbearg | 0:1719fc9a160e | 1 | //================================== |
dbearg | 0:1719fc9a160e | 2 | // Add any libraries that you use: |
dbearg | 0:1719fc9a160e | 3 | //================================== |
dbearg | 0:1719fc9a160e | 4 | #include "mbed.h" |
dbearg | 0:1719fc9a160e | 5 | #include "Servo.h" |
dbearg | 0:1719fc9a160e | 6 | |
dbearg | 0:1719fc9a160e | 7 | |
dbearg | 0:1719fc9a160e | 8 | //================================== |
dbearg | 0:1719fc9a160e | 9 | // Add variables: |
dbearg | 0:1719fc9a160e | 10 | //================================== |
dbearg | 0:1719fc9a160e | 11 | |
dbearg | 0:1719fc9a160e | 12 | //add a servo to PWM output on pin 25 |
dbearg | 0:1719fc9a160e | 13 | Servo myservo(p21); |
dbearg | 0:1719fc9a160e | 14 | |
dbearg | 0:1719fc9a160e | 15 | //add a variable for servo position |
dbearg | 0:1719fc9a160e | 16 | float position = 0.5; |
dbearg | 0:1719fc9a160e | 17 | |
dbearg | 0:1719fc9a160e | 18 | //add variables for the onboard LEDS, which display for each button |
dbearg | 0:1719fc9a160e | 19 | DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); |
dbearg | 0:1719fc9a160e | 20 | |
dbearg | 0:1719fc9a160e | 21 | |
dbearg | 0:1719fc9a160e | 22 | |
dbearg | 0:1719fc9a160e | 23 | //================================== |
dbearg | 0:1719fc9a160e | 24 | // Functions for each button press |
dbearg | 0:1719fc9a160e | 25 | //================================== |
dbearg | 0:1719fc9a160e | 26 | /* |
dbearg | 0:1719fc9a160e | 27 | |
dbearg | 0:1719fc9a160e | 28 | // Functions for button 1 |
dbearg | 0:1719fc9a160e | 29 | void a_hit_interrupt (void) { |
dbearg | 0:1719fc9a160e | 30 | |
dbearg | 0:1719fc9a160e | 31 | //move servo motor |
dbearg | 0:1719fc9a160e | 32 | position = 1.0; |
dbearg | 0:1719fc9a160e | 33 | myservo = position; |
dbearg | 0:1719fc9a160e | 34 | |
dbearg | 0:1719fc9a160e | 35 | //Set LED 1 |
dbearg | 0:1719fc9a160e | 36 | led1 = 1, led2 = 0, led3 = 0, led4 = 0; |
dbearg | 0:1719fc9a160e | 37 | } |
dbearg | 0:1719fc9a160e | 38 | |
dbearg | 0:1719fc9a160e | 39 | |
dbearg | 0:1719fc9a160e | 40 | |
dbearg | 0:1719fc9a160e | 41 | // Functions for button 2 |
dbearg | 0:1719fc9a160e | 42 | void b_hit_interrupt (void) { |
dbearg | 0:1719fc9a160e | 43 | |
dbearg | 0:1719fc9a160e | 44 | //move servo motor |
dbearg | 0:1719fc9a160e | 45 | position = 0.0; |
dbearg | 0:1719fc9a160e | 46 | myservo = position; |
dbearg | 0:1719fc9a160e | 47 | //Set LED 2 |
dbearg | 0:1719fc9a160e | 48 | led1 = 0, led2 = 1, led3 = 0, led4 = 0; |
dbearg | 0:1719fc9a160e | 49 | } |
dbearg | 0:1719fc9a160e | 50 | |
dbearg | 0:1719fc9a160e | 51 | |
dbearg | 0:1719fc9a160e | 52 | |
dbearg | 0:1719fc9a160e | 53 | // Functions for button 3 |
dbearg | 0:1719fc9a160e | 54 | void c_hit_interrupt (void) { |
dbearg | 0:1719fc9a160e | 55 | |
dbearg | 0:1719fc9a160e | 56 | //Set LED 3 |
dbearg | 0:1719fc9a160e | 57 | led1 = 0, led2 = 0, led3 = 1, led4 = 0; |
dbearg | 0:1719fc9a160e | 58 | } |
dbearg | 0:1719fc9a160e | 59 | |
dbearg | 0:1719fc9a160e | 60 | |
dbearg | 0:1719fc9a160e | 61 | |
dbearg | 0:1719fc9a160e | 62 | // Functions for button 4 |
dbearg | 0:1719fc9a160e | 63 | void d_hit_interrupt (void) { |
dbearg | 0:1719fc9a160e | 64 | |
dbearg | 0:1719fc9a160e | 65 | //Set LED 4 |
dbearg | 0:1719fc9a160e | 66 | led1 = 0, led2 = 0, led3 = 0, led4 = 1; |
dbearg | 0:1719fc9a160e | 67 | } |
dbearg | 0:1719fc9a160e | 68 | |
dbearg | 0:1719fc9a160e | 69 | |
dbearg | 0:1719fc9a160e | 70 | |
dbearg | 0:1719fc9a160e | 71 | //========================================================== |
dbearg | 0:1719fc9a160e | 72 | // MAIN FUNCTION |
dbearg | 0:1719fc9a160e | 73 | // waits for button press, then uses the button code above |
dbearg | 0:1719fc9a160e | 74 | //========================================================== |
dbearg | 0:1719fc9a160e | 75 | */ |
dbearg | 0:1719fc9a160e | 76 | int main() { |
dbearg | 0:1719fc9a160e | 77 | /* |
dbearg | 0:1719fc9a160e | 78 | //tune range depending on servo motor |
dbearg | 0:1719fc9a160e | 79 | float range = 0.0009; |
dbearg | 0:1719fc9a160e | 80 | |
dbearg | 0:1719fc9a160e | 81 | // Use internal pullup resistors to limit the signal current |
dbearg | 0:1719fc9a160e | 82 | a.mode(PullUp); |
dbearg | 0:1719fc9a160e | 83 | b.mode(PullUp); |
dbearg | 0:1719fc9a160e | 84 | c.mode(PullUp); |
dbearg | 0:1719fc9a160e | 85 | d.mode(PullUp); |
dbearg | 0:1719fc9a160e | 86 | |
dbearg | 0:1719fc9a160e | 87 | // Delay for initial pullup switching to take effect |
dbearg | 0:1719fc9a160e | 88 | wait(.01); |
dbearg | 0:1719fc9a160e | 89 | |
dbearg | 0:1719fc9a160e | 90 | // tells the code what function should be called for each switch press |
dbearg | 0:1719fc9a160e | 91 | a.fall(&a_hit_interrupt); |
dbearg | 0:1719fc9a160e | 92 | b.fall(&b_hit_interrupt); |
dbearg | 0:1719fc9a160e | 93 | c.fall(&c_hit_interrupt); |
dbearg | 0:1719fc9a160e | 94 | d.fall(&d_hit_interrupt); |
dbearg | 0:1719fc9a160e | 95 | |
dbearg | 0:1719fc9a160e | 96 | |
dbearg | 0:1719fc9a160e | 97 | while(1) { |
dbearg | 0:1719fc9a160e | 98 | //set the servo to use the set value |
dbearg | 0:1719fc9a160e | 99 | myservo.calibrate(range, 45.0); |
dbearg | 0:1719fc9a160e | 100 | |
dbearg | 0:1719fc9a160e | 101 | //reset LEDs |
dbearg | 0:1719fc9a160e | 102 | led1 = 0, led2 = 0, led3 = 0, led4 = 0; |
dbearg | 0:1719fc9a160e | 103 | |
dbearg | 0:1719fc9a160e | 104 | } |
dbearg | 0:1719fc9a160e | 105 | */ |
dbearg | 0:1719fc9a160e | 106 | myservo = position; |
dbearg | 0:1719fc9a160e | 107 | wait(1); |
dbearg | 0:1719fc9a160e | 108 | while (1){ |
dbearg | 0:1719fc9a160e | 109 | myservo = myservo+0.01; |
dbearg | 0:1719fc9a160e | 110 | wait(0.1); |
dbearg | 0:1719fc9a160e | 111 | } |
dbearg | 0:1719fc9a160e | 112 | } |