Code for LHS 12_12_2013

Dependencies:   Servo mbed

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?

UserRevisionLine numberNew 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 }