Code for LHS 12_12_2013

Dependencies:   Servo mbed

Committer:
dbearg
Date:
Sat Feb 01 16:47:22 2014 +0000
Revision:
1:da313e5e8914
Parent:
0:17b1dcf89648
Child:
2:da289f7a67c9
changed language to fit continuous motor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dbearg 1:da313e5e8914 1 //==================================
dbearg 1:da313e5e8914 2 //
dbearg 1:da313e5e8914 3 // PLTW PROGRAM
dbearg 1:da313e5e8914 4 // ----------------------------
dbearg 1:da313e5e8914 5 // Controls a PWM output using
dbearg 1:da313e5e8914 6 // digital inputs
dbearg 1:da313e5e8914 7 //
dbearg 1:da313e5e8914 8 //==================================
dbearg 1:da313e5e8914 9
dbearg 1:da313e5e8914 10
dbearg 0:17b1dcf89648 11 //==================================
dbearg 0:17b1dcf89648 12 // Add any libraries that you use:
dbearg 0:17b1dcf89648 13 //==================================
dbearg 1:da313e5e8914 14
dbearg 0:17b1dcf89648 15 #include "mbed.h"
dbearg 0:17b1dcf89648 16 #include "Servo.h"
dbearg 0:17b1dcf89648 17
dbearg 0:17b1dcf89648 18
dbearg 0:17b1dcf89648 19 //==================================
dbearg 0:17b1dcf89648 20 // Add variables:
dbearg 0:17b1dcf89648 21 //==================================
dbearg 0:17b1dcf89648 22
dbearg 1:da313e5e8914 23 //add a motor to PWM output on pin 25
dbearg 1:da313e5e8914 24 Servo motor1(p25);
dbearg 0:17b1dcf89648 25
dbearg 1:da313e5e8914 26 //add a variable for motor speed
dbearg 1:da313e5e8914 27 float speed = 0.5;
dbearg 0:17b1dcf89648 28
dbearg 0:17b1dcf89648 29 //add variables for the onboard LEDS, which display for each button
dbearg 0:17b1dcf89648 30 DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
dbearg 0:17b1dcf89648 31
dbearg 0:17b1dcf89648 32 //add variables for button inputs on pins 15, 16, 17, and 18.
dbearg 0:17b1dcf89648 33 InterruptIn a(p18), b(p17), c(p16), d(p15);
dbearg 0:17b1dcf89648 34
dbearg 0:17b1dcf89648 35 //==================================
dbearg 0:17b1dcf89648 36 // Functions for each button press
dbearg 0:17b1dcf89648 37 //==================================
dbearg 0:17b1dcf89648 38
dbearg 0:17b1dcf89648 39
dbearg 0:17b1dcf89648 40 // Functions for button 1
dbearg 0:17b1dcf89648 41 void a_hit_interrupt (void) {
dbearg 0:17b1dcf89648 42
dbearg 1:da313e5e8914 43 //move VEX motor
dbearg 1:da313e5e8914 44 speed = 1.0;
dbearg 1:da313e5e8914 45 motor1 = speed;
dbearg 0:17b1dcf89648 46
dbearg 0:17b1dcf89648 47 //Set LED 1
dbearg 0:17b1dcf89648 48 led1 = 1, led2 = 0, led3 = 0, led4 = 0;
dbearg 0:17b1dcf89648 49 }
dbearg 0:17b1dcf89648 50
dbearg 0:17b1dcf89648 51
dbearg 0:17b1dcf89648 52
dbearg 0:17b1dcf89648 53 // Functions for button 2
dbearg 0:17b1dcf89648 54 void b_hit_interrupt (void) {
dbearg 0:17b1dcf89648 55
dbearg 1:da313e5e8914 56 //move VEX motor
dbearg 1:da313e5e8914 57 speed = 0.0;
dbearg 1:da313e5e8914 58 motor1 = speed;
dbearg 0:17b1dcf89648 59 //Set LED 2
dbearg 0:17b1dcf89648 60 led1 = 0, led2 = 1, led3 = 0, led4 = 0;
dbearg 0:17b1dcf89648 61 }
dbearg 0:17b1dcf89648 62
dbearg 0:17b1dcf89648 63
dbearg 0:17b1dcf89648 64
dbearg 0:17b1dcf89648 65 // Functions for button 3
dbearg 0:17b1dcf89648 66 void c_hit_interrupt (void) {
dbearg 0:17b1dcf89648 67
dbearg 0:17b1dcf89648 68 //Set LED 3
dbearg 0:17b1dcf89648 69 led1 = 0, led2 = 0, led3 = 1, led4 = 0;
dbearg 0:17b1dcf89648 70 }
dbearg 0:17b1dcf89648 71
dbearg 0:17b1dcf89648 72
dbearg 0:17b1dcf89648 73
dbearg 0:17b1dcf89648 74 // Functions for button 4
dbearg 0:17b1dcf89648 75 void d_hit_interrupt (void) {
dbearg 0:17b1dcf89648 76
dbearg 0:17b1dcf89648 77 //Set LED 4
dbearg 0:17b1dcf89648 78 led1 = 0, led2 = 0, led3 = 0, led4 = 1;
dbearg 0:17b1dcf89648 79 }
dbearg 0:17b1dcf89648 80
dbearg 0:17b1dcf89648 81
dbearg 0:17b1dcf89648 82
dbearg 0:17b1dcf89648 83 //==========================================================
dbearg 0:17b1dcf89648 84 // MAIN FUNCTION
dbearg 0:17b1dcf89648 85 // waits for button press, then uses the button code above
dbearg 0:17b1dcf89648 86 //==========================================================
dbearg 0:17b1dcf89648 87
dbearg 0:17b1dcf89648 88 int main() {
dbearg 0:17b1dcf89648 89
dbearg 1:da313e5e8914 90 //tune range depending on VEX motor
dbearg 0:17b1dcf89648 91 float range = 0.0009;
dbearg 0:17b1dcf89648 92
dbearg 0:17b1dcf89648 93 // Use internal pullup resistors to limit the signal current
dbearg 0:17b1dcf89648 94 a.mode(PullUp);
dbearg 0:17b1dcf89648 95 b.mode(PullUp);
dbearg 0:17b1dcf89648 96 c.mode(PullUp);
dbearg 0:17b1dcf89648 97 d.mode(PullUp);
dbearg 0:17b1dcf89648 98
dbearg 0:17b1dcf89648 99 // Delay for initial pullup switching to take effect
dbearg 0:17b1dcf89648 100 wait(.01);
dbearg 0:17b1dcf89648 101
dbearg 0:17b1dcf89648 102 // tells the code what function should be called for each switch press
dbearg 0:17b1dcf89648 103 a.fall(&a_hit_interrupt);
dbearg 0:17b1dcf89648 104 b.fall(&b_hit_interrupt);
dbearg 0:17b1dcf89648 105 c.fall(&c_hit_interrupt);
dbearg 0:17b1dcf89648 106 d.fall(&d_hit_interrupt);
dbearg 0:17b1dcf89648 107
dbearg 0:17b1dcf89648 108
dbearg 0:17b1dcf89648 109 while(1) {
dbearg 1:da313e5e8914 110 //set the VEX to use the set value
dbearg 1:da313e5e8914 111 motor1.calibrate(range, 45.0);
dbearg 0:17b1dcf89648 112
dbearg 0:17b1dcf89648 113 //reset LEDs
dbearg 0:17b1dcf89648 114 led1 = 0, led2 = 0, led3 = 0, led4 = 0;
dbearg 0:17b1dcf89648 115
dbearg 0:17b1dcf89648 116 }
dbearg 0:17b1dcf89648 117 }