added gy80 dcm

Dependencies:   mbed DCM_AHRS_GY80 PID MMA8451Q

Fork of quadCommand by Greg Abdo

quadCommand/quadCommand.h

Committer:
gabdo
Date:
2013-06-10
Revision:
49:f202fb0d4128
Parent:
48:75d06c707414
Child:
50:197a18e49eb4

File content as of revision 49:f202fb0d4128:

/************************* quadCommand.h *********************************/
/*                                                                       */
/*************************************************************************/

#ifndef QUAD_COMMAND_H
#define QUAD_COMMAND_H

#include "mbed.h"
#include "motor.h"
#include "com.h"
#include "sensors.h"
#include "PID.h"

// Motor constants.
const PinName MOTOR1    =   PTD4;   // Pin used for motor 1.
const PinName MOTOR2    =   PTA12;  // Pin used for motor 2.
const PinName MOTOR3    =   PTA4;   // Pin used for motor 3.
const PinName MOTOR4    =   PTA5;   // Pin used for motor 4.

// Xbee constants.
// Alternative Pins 
//  RX = PTA1,  TX PTA2
const PinName TXPIN     =   PTD3;   // Pin used for xbee TX.
const PinName RXPIN     =   PTD2;   // Pin used for xbee RX.


// Sensor constants.
#define MMA8451_I2C_ADDRESS (0x1d<<1)   // Address of I2C accelerometer.
const PinName ACCSDA    =   PTE25;  // Pin for accelerometer SDA line.
const PinName ACCSCL    =   PTE24;  // Pin for accelerometer SCL line.

#define SENSSORDELAY    10.0f
#define SENDDELAY       10.0f

// PID constants.
#define DEFAULT_WINDUP_GUARD 20.0f
#define MOTOR_UPDATE    10.0f

class quadCommand 
{
    public:
        quadCommand();          // Constructor.
        void run();             // The main loop.
        void rxInput();         // Receive data from the Xbee.
        void updateMotors();    // Send PID values to the motors.
        void updateCurrent();   // Update the current telemetry.
        void sendTelemetry();   // Transmit the current telemetry.
        
    private:
        motor *myMotors[4];     // Array of motor objects.
        com *myCom;             // The com object.
        sensors *world;         // Sensors used to observe the world.
        
        Ticker sensorProcess;
        Ticker sendProcess;
        Ticker motorProcess;    // Control timer
        
        float currentThrottle;
        float currentPitch;
        float currentRoll;
        float currentYaw;
        
        float targetThrottle;
        float targetPitch;
        float targetRoll;
        float targetYaw;
        
        PID pidThrottle;
        PID pidPitch;
        PID pidRoll;
        PID pidYaw;
};

#endif