Dependencies:   Motor PinDetect Servo mbed

main.cpp

Committer:
m182376
Date:
2015-10-27
Revision:
0:63da85966b5c

File content as of revision 0:63da85966b5c:

#include "mbed.h"
#include "Motor.h"
#include "Servo.h"
#include "PinDetect.h"
 
Motor m(p25, p27, p28);

DigitalIn sw1(p16);
DigitalIn sw2(p17);
DigitalIn sw3(p18);
DigitalIn sw4(p19);
DigitalIn sw5(p20);
PinDetect push1(p12);
PinDetect push2(p13);
Servo servo1(p22);
Servo servo2(p21);

BusOut lights(p5, p6, p7, p8, p11);

float a;
float b;

int volatile count=0;

// Callback routine is interrupt activated by a debounced pb1 hit
void push1_hit_callback (void)
{

    if (a > 0) {

        servo1 = 0;
        wait(.2);
        servo1 = 0.5;

    } else if (a < 0) {

        servo1 = 1;
        wait(.2);
        servo1 = 0.5;

    }

}
// Callback routine is interrupt activated by a debounced pb2 hit
void push2_hit_callback (void)
{

    if (a > 0) {

        servo2 = 0;
        wait(.2);
        servo2 = 0.5;

    }

    else if (a < 0) {

        servo2 = 1;
        wait(.2);
        servo2 = 0.5;
    }

}
int main()
{

    servo1 = 0.5;
    servo2 = 0.5;

    // Use internal pullups for pushbutton
    push1.mode(PullUp);
    push2.mode(PullUp);
    // Delay for initial pullup to take effect
    wait(.01);
    // Setup Interrupt callback functions for a pb hit
    push1.attach_deasserted(&push1_hit_callback);
    push2.attach_deasserted(&push2_hit_callback);
    // Start sampling pb inputs using interrupts
    push1.setSampleFrequency();
    push2.setSampleFrequency();
    //Blink myled in main routine forever while responding to pb changes
    // via interrupts that activate the callback counter function

    servo1 = 0.5;
    servo2 = 0.5;
    servo1.calibrate (.0009, 90);
    servo2.calibrate (.0009, 90);

    while(1) {

        a = rand()/(float)RAND_MAX*(-1.0)+0.4;
        b = rand()/(float)RAND_MAX*5.0 +3.0;

        if(sw1 == 1 && sw2!= 1 && sw3 != 1 && sw4 != 1) {  //player1



            if(a>=.28 || a <= -.28) {

                servo2 = 0;
                
                lights = 31; // LED 1 on
                wait(.125); // Wait .4 seconds
                lights= 0;

                m.speed(a);
                wait(b);



            }
        } else if(sw1 != 1 && sw2== 1 && sw3 != 1 && sw4 != 1) { //player2
            if(a>=.28 || a <= -.28) {
                lights = 31; //
                wait(.125); //
                lights = 0; //

                m.speed(a);
                wait(b);

            }
        } else if(sw1 != 1 && sw2!= 1 && sw3 == 1 && sw4 != 1 && sw5 != 1) { //player3
            if(a>=.28 ) {

                lights = 31; // LED 1&2&3&4&5 on
                wait(.125); //Wait .4 seconds
                lights = 0; //LED 1&2&3&4 on

                m.speed(a);
                wait(b);

            }
        } else if(sw1 != 1 && sw2!= 1 && sw3 == 1 && sw5 ==1 && sw4 != 1) { //player3
            if(a>=.28 ) {

                lights = 31; // LED 1&2&3&4&5 on
                wait(.125); //Wait .4 seconds
                lights = 0; //LED 1&2&3&4 on

                m.speed(-a);
                wait(b);

            }
        } else if(sw4 == 1 && sw1 != 1 && sw2!= 1 && sw3 == 1 && sw5 ==1 || sw4 == 1 && sw1 != 1 && sw2!= 1 && sw3 == 1 || sw4 == 1 && sw1 != 1 && sw2== 1 && sw3 != 1 || sw4 == 1 && sw1 == 1 && sw2!= 1 && sw3 != 1 || sw4 == 1 && sw1 != 1 && sw2!= 1 && sw3 != 1 ) { //player3

            m.speed(0);
            lights = 31; // LED 1&2&3 on
            wait(.125); //Wait .4 seconds
            lights = 0; //LED 1&2 on
            wait(.125); //Wait .4 seconds
            lights = 31; //LED 1 on
            wait(.125); //Wait .4 seconds
            lights = 0; //LED 1&2 on
            wait(.125); //Wait .4 seconds
            lights = 31; //LED 1 on
            wait(.125); //Wait .4 seconds
            lights = 0; //LED 1&2 on
            wait(.125); //Wait .4 seconds

        }
    }
}