laptop controlled bluetooth quadcopter

Dependencies:   FXAS21000 FXOS8700CQ FXOS8700Q mbed

main.cpp

Committer:
siddharthp
Date:
2016-04-27
Revision:
0:0a1a2f47fd18

File content as of revision 0:0a1a2f47fd18:

#include "mbed.h"
#include "FXOS8700Q.h"
#include "FXOS8700CQ.h"
#include "FXAS21000.h"

// define all ports
PwmOut PWM1(D8); //moveForward
PwmOut PWM2(D9); //moveBack
PwmOut PWM3(D10); //left
PwmOut PWM4(D11); //right

DigitalOut red(LED_RED);
DigitalOut green(LED_GREEN);

Timer GlobalTime;
Timer ProgramTimer;

char c;
int flagBlue;
int sflag;
long loopStartTime;
long timer;

// define bluetooth and acc and gyro
Serial blue(D1,D0);     //(TX,DX)
Serial pc(USBTX, USBRX);    // Used to debug
FXOS8700Q_acc combo_acc(D14, D15, FXOS8700CQ_SLAVE_ADDR0);
FXOS8700Q_mag combo_mag(D14, D15, FXOS8700CQ_SLAVE_ADDR0);
FXAS21000 gyro(D14, D15);

//define functions
void start(void);
void stop(void);
void moveForward(void);
void moveBack(void);
void moveRight(void);
void moveLeft(void);

void blueInterrupt()
{
    c = blue.getc(); //receives the command
    flagBlue=1;
}

int main()
{
    pc.baud(115200);    
    
    float gyro_data[3];
    MotionSensorDataUnits adata;
    MotionSensorDataUnits mdata;
    //int16_t acc_raw[3];

    //Bluetooth init
    blue.baud(115200);
    blue.attach(&blueInterrupt);
    
    
    printf("\r\nStarting\r\n\r\n");
    
    red = 0; green= 1;
    GlobalTime.start();
    
    PWM1.period_ms(20);           
    PWM1.pulsewidth_us(100);
    PWM2.pulsewidth_us(100);
    PWM3.pulsewidth_us(100);
    PWM4.pulsewidth_us(100);

    combo_acc.enable();
    combo_mag.enable();
    blue.printf("FXOS8700 Combo mag = %X\r\n", combo_mag.whoAmI());
    blue.printf("FXOS8700 Combo acc = %X\r\n", combo_acc.whoAmI());
    blue.printf("FXAS21000 Gyro = %X\r\n", gyro.getWhoAmI());
    
    
    ProgramTimer.start();
    loopStartTime = ProgramTimer.read_us();
    timer = loopStartTime;
    
    wait(1);
    
    c= blue.getc();
    if (c == 'x') 
    {
        sflag = 1;
        blue.printf("stop\n\r"); 
        red =0; green =1;
        stop();
    }
    else if (c == 'z')
    {
        blue.printf("up\n\r");
        wait(2);
        red = 1; green= 0;
        start();
    }
    else if (c == 'w') 
    {
        blue.printf("forward\n\r");
        moveForward();
    }
    else if (c == 's')
    {
        blue.printf("back\n\r");
        moveBack();
    }
    else if (c == 'a')
    {
        blue.printf("left\n\r");
        moveLeft();
    }
    else if (c == 'd')
    {
        blue.printf("right\n\r");
        moveRight();
    }     
    else blue.printf("%wrong command: \n\r", c);
    
    while(1) 
    {
        combo_acc.getAxis(adata);
        blue.printf("FXOS8700 Acc:   X:%6.3f Y:%6.3f Z:%6.3f\r\n", adata.x, adata.y, adata.z);
        
        combo_mag.getAxis(mdata);
        blue.printf("FXOS8700 Mag:   X:%6.2f Y:%6.2f Z:%6.2f\r\n", mdata.x, mdata.y, mdata.z);

        gyro.ReadXYZ(gyro_data);
        blue.printf("FXAS21000 Gyro: X:%6.2f Y:%6.2f Z:%6.2f\r\n", gyro_data[0], gyro_data[1], gyro_data[2]);
        
        blue.printf("\r\n");
        wait(1);
        
        
    }
       
}
void start(void)
{
}

void stop(void)
{
}

void moveForward(void)
{
}

void moveBack(void)
{
}

void moveRight(void)
{
}

void moveLeft(void)
{
}