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