Code for LHS 12_12_2013

Dependencies:   Servo mbed

main.cpp

Committer:
dbearg
Date:
2014-02-01
Revision:
1:da313e5e8914
Parent:
0:17b1dcf89648
Child:
2:da289f7a67c9

File content as of revision 1:da313e5e8914:

//==================================
//
//          PLTW PROGRAM
//   ----------------------------
// Controls a PWM output using 
// digital inputs
//
//==================================


//==================================
// Add any libraries that you use:
//==================================

#include "mbed.h"
#include "Servo.h"


//==================================
// Add variables:
//==================================

//add a motor to PWM output on pin 25
Servo motor1(p25);

//add a variable for motor speed
float speed = 0.5;

//add variables for the onboard LEDS, which display for each button
DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);

//add variables for button inputs on pins 15, 16, 17, and 18.
InterruptIn a(p18), b(p17), c(p16), d(p15);

//==================================
// Functions for each button press
//==================================


// Functions for button 1
void a_hit_interrupt (void) {

    //move VEX motor
    speed = 1.0;
    motor1 = speed;
    
    //Set LED 1
    led1 = 1, led2 = 0, led3 = 0, led4 = 0;
}
 
 
 
// Functions for button 2
void b_hit_interrupt (void) {

    //move VEX motor
    speed = 0.0;
    motor1 = speed;
    //Set LED 2
    led1 = 0, led2 = 1, led3 = 0, led4 = 0;    
}



// Functions for button 3 
void c_hit_interrupt (void) {

    //Set LED 3
    led1 = 0, led2 = 0, led3 = 1, led4 = 0;
}
 
 
 
// Functions for button 4 
void d_hit_interrupt (void) {

    //Set LED 4
    led1 = 0, led2 = 0, led3 = 0, led4 = 1;
}



//==========================================================
//  MAIN FUNCTION
//  waits for button press, then uses the button code above
//==========================================================

int main() {

    //tune range depending on VEX motor
    float range = 0.0009;
       
    // Use internal pullup resistors to limit the signal current
    a.mode(PullUp);
    b.mode(PullUp);
    c.mode(PullUp);
    d.mode(PullUp);            
    
    // Delay for initial pullup switching to take effect
    wait(.01);
    
    // tells the code what function should be called for each switch press
    a.fall(&a_hit_interrupt);
    b.fall(&b_hit_interrupt);
    c.fall(&c_hit_interrupt);
    d.fall(&d_hit_interrupt);
    
    
    while(1) { 
        //set the VEX to use the set value
        motor1.calibrate(range, 45.0); 
        
        //reset LEDs
        led1 = 0, led2 = 0, led3 = 0, led4 = 0;

    }
}