added gy80 dcm

Dependencies:   mbed DCM_AHRS_GY80 PID MMA8451Q

Fork of quadCommand by Greg Abdo

quadCommand/quadCommand.h

Committer:
gabdo
Date:
2013-06-11
Revision:
52:24590a45b807
Parent:
51:60258b84ebab
Child:
53:cce34958f952

File content as of revision 52:24590a45b807:

/************************* 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.
#define MOTOR1              PTD4        // Pin used for motor 1.
#define MOTOR2              PTA12       // Pin used for motor 2.
#define MOTOR3              PTA4        // Pin used for motor 3.
#define MOTOR4              PTA5        // Pin used for motor 4.

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


// Sensor constants.
#define MMA8451_I2C_ADDRESS (0x1d<<1)   // Address of I2C accelerometer.
#define ACCSDA              PTE25       // Pin for accelerometer SDA line.
#define ACCSCL              PTE24       // Pin for accelerometer SCL line.
#define SENSSOR_DELAY       100.0f

// PID constants.
#define DEFAULT_WINDUP_GUARD 20.0f
#define MOTOR_UPDATE        100.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 for Xbee communication.
        sensors *world;         // Sensors used to observe the world.
        
        PID pidThrottle;        // PID for throttle.
        PID pidPitch;           // PID for pitch.
        PID pidRoll;            // PID for roll.
        PID pidYaw;             // PID for yaw.
        
        Ticker sensorProcess;   // Timer for getting sensor data.
        Ticker motorProcess;    // Timer for updating the motors.
        Ticker sendProcess;     // Timer for sending data through the Xbee.
        
        float currentThrottle;  // Current throttle.
        float currentPitch;     // Current pitch.
        float currentRoll;      // Current roll.
        float currentYaw;       // Current yaw.
        
        float targetThrottle;   // Desired throttle.
        float targetPitch;      // Desired pitch.
        float targetRoll;       // Desired roll.
        float targetYaw;        // Desired yaw.
};

#endif