David Beargie
/
LHS_program_1
Code for LHS 12_12_2013
main.cpp@4:3588eff6d065, 2014-03-12 (annotated)
- Committer:
- dbearg
- Date:
- Wed Mar 12 21:38:21 2014 +0000
- Revision:
- 4:3588eff6d065
- Parent:
- 3:59a9bd160e29
added section for code help.; added button lockout to protect motor and gears.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dbearg | 4:3588eff6d065 | 1 | //=======================================| |
dbearg | 4:3588eff6d065 | 2 | //%|==================================|%%| |
dbearg | 4:3588eff6d065 | 3 | //%| |%%| |
dbearg | 4:3588eff6d065 | 4 | //%| PLTW PROGRAM |%%| |
dbearg | 4:3588eff6d065 | 5 | //%| ---------------------------- |%%| |
dbearg | 4:3588eff6d065 | 6 | //%| Controls a PWM output using |%%| |
dbearg | 4:3588eff6d065 | 7 | //%| digital inputs |%%| |
dbearg | 4:3588eff6d065 | 8 | //%| |%%| |
dbearg | 4:3588eff6d065 | 9 | //%| MOTOR SPEED: |%%| |
dbearg | 4:3588eff6d065 | 10 | //%| 0.00 - 0.49 reverse |%%| |
dbearg | 4:3588eff6d065 | 11 | //%| 0.49 - 0.51 zero |%%| |
dbearg | 4:3588eff6d065 | 12 | //%| 0.51 - 1.00 forward |%%| |
dbearg | 4:3588eff6d065 | 13 | //%| |%%| |
dbearg | 4:3588eff6d065 | 14 | //%|==================================|%%| |
dbearg | 4:3588eff6d065 | 15 | //=======================================| |
dbearg | 1:da313e5e8914 | 16 | |
dbearg | 0:17b1dcf89648 | 17 | //================================== |
dbearg | 0:17b1dcf89648 | 18 | // Add any libraries that you use: |
dbearg | 0:17b1dcf89648 | 19 | //================================== |
dbearg | 1:da313e5e8914 | 20 | |
dbearg | 0:17b1dcf89648 | 21 | #include "mbed.h" |
dbearg | 0:17b1dcf89648 | 22 | #include "Servo.h" |
dbearg | 0:17b1dcf89648 | 23 | |
dbearg | 0:17b1dcf89648 | 24 | |
dbearg | 0:17b1dcf89648 | 25 | //================================== |
dbearg | 0:17b1dcf89648 | 26 | // Add variables: |
dbearg | 0:17b1dcf89648 | 27 | //================================== |
dbearg | 0:17b1dcf89648 | 28 | |
dbearg | 1:da313e5e8914 | 29 | //add a motor to PWM output on pin 25 |
dbearg | 1:da313e5e8914 | 30 | Servo motor1(p25); |
dbearg | 0:17b1dcf89648 | 31 | |
dbearg | 1:da313e5e8914 | 32 | //add a variable for motor speed |
dbearg | 1:da313e5e8914 | 33 | float speed = 0.5; |
dbearg | 0:17b1dcf89648 | 34 | |
dbearg | 0:17b1dcf89648 | 35 | //add variables for the onboard LEDS, which display for each button |
dbearg | 0:17b1dcf89648 | 36 | DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); |
dbearg | 0:17b1dcf89648 | 37 | |
dbearg | 0:17b1dcf89648 | 38 | //add variables for button inputs on pins 15, 16, 17, and 18. |
dbearg | 0:17b1dcf89648 | 39 | InterruptIn a(p18), b(p17), c(p16), d(p15); |
dbearg | 0:17b1dcf89648 | 40 | |
dbearg | 4:3588eff6d065 | 41 | //add variable for button press //=========================================== NEW |
dbearg | 4:3588eff6d065 | 42 | int apress = 0; //=========================================== NEW |
dbearg | 4:3588eff6d065 | 43 | |
dbearg | 0:17b1dcf89648 | 44 | //================================== |
dbearg | 0:17b1dcf89648 | 45 | // Functions for each button press |
dbearg | 0:17b1dcf89648 | 46 | //================================== |
dbearg | 0:17b1dcf89648 | 47 | |
dbearg | 0:17b1dcf89648 | 48 | |
dbearg | 0:17b1dcf89648 | 49 | // Functions for button 1 |
dbearg | 0:17b1dcf89648 | 50 | void a_hit_interrupt (void) { |
dbearg | 0:17b1dcf89648 | 51 | |
dbearg | 4:3588eff6d065 | 52 | if(apress == 0){ // PRESSING A WILL DO NOTHING AFTER THE FIRST PRESS |
dbearg | 4:3588eff6d065 | 53 | // UNLESS THE B BUTTON HAS BEEN PRESSED |
dbearg | 4:3588eff6d065 | 54 | //set the apress variable to 1 // SET APRESS VARIABLE TO 1 |
dbearg | 4:3588eff6d065 | 55 | apress = 1; // SET APRESS VARIABLE TO 1 |
dbearg | 4:3588eff6d065 | 56 | |
dbearg | 4:3588eff6d065 | 57 | //move VEX motor (1 is full CCW, 0 is full CW) |
dbearg | 4:3588eff6d065 | 58 | speed = 1.0; |
dbearg | 4:3588eff6d065 | 59 | motor1 = speed; |
dbearg | 4:3588eff6d065 | 60 | //set the motor on duration in seconds: |
dbearg | 4:3588eff6d065 | 61 | wait(1); |
dbearg | 4:3588eff6d065 | 62 | //stop motor |
dbearg | 4:3588eff6d065 | 63 | speed = 0.5; |
dbearg | 4:3588eff6d065 | 64 | motor1 = speed; |
dbearg | 0:17b1dcf89648 | 65 | |
dbearg | 4:3588eff6d065 | 66 | //Set LED 1 |
dbearg | 4:3588eff6d065 | 67 | led1 = 1, led2 = 0, led3 = 0, led4 = 0; |
dbearg | 4:3588eff6d065 | 68 | } |
dbearg | 0:17b1dcf89648 | 69 | } |
dbearg | 0:17b1dcf89648 | 70 | |
dbearg | 0:17b1dcf89648 | 71 | |
dbearg | 0:17b1dcf89648 | 72 | |
dbearg | 0:17b1dcf89648 | 73 | // Functions for button 2 |
dbearg | 0:17b1dcf89648 | 74 | void b_hit_interrupt (void) { |
dbearg | 4:3588eff6d065 | 75 | if(apress == 1){ // PRESSING B WILL DO NOTHING IF A HAS NOT PRESSED |
dbearg | 4:3588eff6d065 | 76 | |
dbearg | 4:3588eff6d065 | 77 | //set the apress variable to 1 // RESET APRESS VARIABLE TO 0 |
dbearg | 4:3588eff6d065 | 78 | apress = 0; // RESET APRESS VARIABLE TO 0 |
dbearg | 0:17b1dcf89648 | 79 | |
dbearg | 2:da289f7a67c9 | 80 | //move VEX motor (1 is full CCW, 0 is full CW) |
dbearg | 1:da313e5e8914 | 81 | speed = 0.0; |
dbearg | 1:da313e5e8914 | 82 | motor1 = speed; |
dbearg | 2:da289f7a67c9 | 83 | //set the motor on duration in seconds: |
dbearg | 2:da289f7a67c9 | 84 | wait(1); |
dbearg | 2:da289f7a67c9 | 85 | //stop motor |
dbearg | 2:da289f7a67c9 | 86 | speed = 0.5; |
dbearg | 2:da289f7a67c9 | 87 | motor1 = speed; |
dbearg | 2:da289f7a67c9 | 88 | |
dbearg | 0:17b1dcf89648 | 89 | //Set LED 2 |
dbearg | 0:17b1dcf89648 | 90 | led1 = 0, led2 = 1, led3 = 0, led4 = 0; |
dbearg | 4:3588eff6d065 | 91 | } |
dbearg | 0:17b1dcf89648 | 92 | } |
dbearg | 0:17b1dcf89648 | 93 | |
dbearg | 0:17b1dcf89648 | 94 | |
dbearg | 0:17b1dcf89648 | 95 | |
dbearg | 0:17b1dcf89648 | 96 | // Functions for button 3 |
dbearg | 0:17b1dcf89648 | 97 | void c_hit_interrupt (void) { |
dbearg | 0:17b1dcf89648 | 98 | |
dbearg | 0:17b1dcf89648 | 99 | //Set LED 3 |
dbearg | 0:17b1dcf89648 | 100 | led1 = 0, led2 = 0, led3 = 1, led4 = 0; |
dbearg | 0:17b1dcf89648 | 101 | } |
dbearg | 0:17b1dcf89648 | 102 | |
dbearg | 0:17b1dcf89648 | 103 | |
dbearg | 0:17b1dcf89648 | 104 | |
dbearg | 0:17b1dcf89648 | 105 | // Functions for button 4 |
dbearg | 0:17b1dcf89648 | 106 | void d_hit_interrupt (void) { |
dbearg | 0:17b1dcf89648 | 107 | |
dbearg | 0:17b1dcf89648 | 108 | //Set LED 4 |
dbearg | 0:17b1dcf89648 | 109 | led1 = 0, led2 = 0, led3 = 0, led4 = 1; |
dbearg | 0:17b1dcf89648 | 110 | } |
dbearg | 0:17b1dcf89648 | 111 | |
dbearg | 0:17b1dcf89648 | 112 | |
dbearg | 0:17b1dcf89648 | 113 | |
dbearg | 0:17b1dcf89648 | 114 | //========================================================== |
dbearg | 0:17b1dcf89648 | 115 | // MAIN FUNCTION |
dbearg | 0:17b1dcf89648 | 116 | // waits for button press, then uses the button code above |
dbearg | 0:17b1dcf89648 | 117 | //========================================================== |
dbearg | 0:17b1dcf89648 | 118 | |
dbearg | 0:17b1dcf89648 | 119 | int main() { |
dbearg | 0:17b1dcf89648 | 120 | |
dbearg | 0:17b1dcf89648 | 121 | // Use internal pullup resistors to limit the signal current |
dbearg | 0:17b1dcf89648 | 122 | a.mode(PullUp); |
dbearg | 0:17b1dcf89648 | 123 | b.mode(PullUp); |
dbearg | 0:17b1dcf89648 | 124 | c.mode(PullUp); |
dbearg | 0:17b1dcf89648 | 125 | d.mode(PullUp); |
dbearg | 0:17b1dcf89648 | 126 | |
dbearg | 0:17b1dcf89648 | 127 | // Delay for initial pullup switching to take effect |
dbearg | 0:17b1dcf89648 | 128 | wait(.01); |
dbearg | 0:17b1dcf89648 | 129 | |
dbearg | 0:17b1dcf89648 | 130 | // tells the code what function should be called for each switch press |
dbearg | 0:17b1dcf89648 | 131 | a.fall(&a_hit_interrupt); |
dbearg | 0:17b1dcf89648 | 132 | b.fall(&b_hit_interrupt); |
dbearg | 0:17b1dcf89648 | 133 | c.fall(&c_hit_interrupt); |
dbearg | 0:17b1dcf89648 | 134 | d.fall(&d_hit_interrupt); |
dbearg | 0:17b1dcf89648 | 135 | |
dbearg | 0:17b1dcf89648 | 136 | |
dbearg | 2:da289f7a67c9 | 137 | while(1) { |
dbearg | 0:17b1dcf89648 | 138 | //reset LEDs |
dbearg | 0:17b1dcf89648 | 139 | led1 = 0, led2 = 0, led3 = 0, led4 = 0; |
dbearg | 0:17b1dcf89648 | 140 | |
dbearg | 0:17b1dcf89648 | 141 | } |
dbearg | 0:17b1dcf89648 | 142 | } |