fdfdf
Dependencies: Motordriver mbed
Video of everything working: https://drive.google.com/a/usna.edu/file/d/0B6gx9qlkekGOSXVlQkN1RWpVcDg/view?usp=sharing
Updated Schematic
Diff: main.cpp
- Revision:
- 13:7e7c97f73ace
- Parent:
- 12:008016f03ca1
- Child:
- 14:931c5abf0006
--- a/main.cpp Thu Feb 05 01:45:09 2015 +0000 +++ b/main.cpp Thu Feb 05 03:13:46 2015 +0000 @@ -6,8 +6,8 @@ #include "motordriver.h" //additional library to expand capabilities of PWMOut for use with motor drivers written by //Initialization///////////////////////////// -Motor wheel(p26, p25, p24, 1); //flywheel (PWM, fwd, rev, brake) -Motor drive(p23, p22, p21, 1); //drive motor (PWM, fwd, rev, brake] +Motor wheel(p24, p26, p25, 1); //flywheel (PWM, fwd, rev, brake) +Motor drive(p21, p23, p22, 1); //drive motor (PWM, fwd, rev, brake] InterruptIn forward(p15); //remote signal to drive car forward @@ -23,26 +23,30 @@ DigitalOut jumpled(LED3); // "" DigitalOut testled(LED4); // "" - -int rev = 0, fwd = 0; //flag for fwd and rev +//Global Variables +int jump = 0; //flag for whether jumping or not int t1, t2, //global variables for the echo pulse. c - t3, t4; //timer within flip -int jump = 0; //flag for wether or not car is jumping + t3, t4; //timer variables within flip function +float PWM_drive = 0.0; //initialize PWM speed for drive wheels + //Interrupt Service Routines//////////////// void driveforward() { - fwd = 1; - rev = 0; + fwdled = 1; + revled = 0; + drive.speed(PWM_drive); } void drivereverse() { - rev=1; - fwd = 0; + revled =1; + fwdled = 0; + drive.speed(-PWM_drive); } void stop() { - fwd = rev = 0; + fwdled = revled = 0; + drive.coast(); } void startechotimer() { @@ -79,15 +83,15 @@ t3 = t.read(); if (t3 - t4 >= 5) { //ensures that this can only run once every six seconds t3 = t.read(); - testled = 1; + testled = 1; // turns on led 3 (during flip) - PWM_wheel = 1.0; //***control law here*** - wheel.speed(PWM_wheel); //sets PWM for flywheel - wait(3); - wheel.stop(1.0); + PWM_wheel = 1.0; //***control law here*** + wheel.speed(PWM_wheel); //sets PWM for flywheel + wait(2); //settling time + wheel.stop(1.0); //regenerative braking t4 = t.read(); - testled = 0; + testled = 0; // turn off led (not flipping) } else testled = 0; @@ -100,15 +104,10 @@ int main() { - - - float PWM_drive = 0.0; //initialize PWM speed for drive wheels float range = 0.0; // variable to hold the range sensor value - fwdled = 0; //intializes all LEDS to off - revled = 0; // - testled = 0; // - jumpled = 0; // + fwdled = revled = testled = jumpled = 0; //intializes all LEDS to off + forward.rise(&driveforward); // rising edge on p15 triggers interrupt to go forward forward.fall(&stop); // falling edge p15 triggers a stop @@ -129,7 +128,7 @@ while(1) { PWM_drive = 1.0; //****control law here for drive speed**** - range = read_ultrasonic(20); //read distance for average of 10 samples + range = read_ultrasonic(20); //read distance for average of 20 samples if (range > 6.0) { //when distance is greater than 6.0 cm it will do the flip function jumpled = 1; // lights LED 3 when in jump flag is true @@ -137,18 +136,6 @@ } else { jumpled = 0; // if not in jump mode led is off } - - if(fwd) { //reads flags for drive/rev - drive.speed(PWM_drive); - fwdled = 1; //led1 on - revled = 0; //led2 off - } else if(rev) { - drive.speed(-PWM_drive); - fwdled = 0; //led1 off - revled = 1; //led2 on - } else { - drive.coast(); - fwdled = revled = 0; - } + } } \ No newline at end of file