added gy80 dcm

Dependencies:   mbed DCM_AHRS_GY80 PID MMA8451Q

Fork of quadCommand by Greg Abdo

Committer:
oprospero
Date:
Fri Jul 26 02:42:31 2013 +0000
Revision:
62:70fc58d4be9b
Parent:
59:9dfd9169a5e7
Child:
63:f4cb482ac5d4
minor fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gabdo 0:8681037b9a18 1 /************************* quadCommand.h *********************************/
gabdo 0:8681037b9a18 2 /* */
gabdo 0:8681037b9a18 3 /*************************************************************************/
gabdo 0:8681037b9a18 4
gabdo 0:8681037b9a18 5 #ifndef QUAD_COMMAND_H
gabdo 0:8681037b9a18 6 #define QUAD_COMMAND_H
gabdo 0:8681037b9a18 7
gabdo 0:8681037b9a18 8 #include "mbed.h"
gabdo 0:8681037b9a18 9 #include "motor.h"
gabdo 0:8681037b9a18 10 #include "com.h"
gabdo 0:8681037b9a18 11 #include "sensors.h"
oprospero 10:af3be8c6aad7 12 #include "PID.h"
oprospero 62:70fc58d4be9b 13 #include "DCM.h"
gabdo 0:8681037b9a18 14
oprospero 62:70fc58d4be9b 15 #define TRIM_VALUE .01
gabdo 55:bca9c9e92da6 16
gabdo 9:9e0d0ba5b6b1 17 // Motor constants.
gabdo 50:197a18e49eb4 18 #define MOTOR1 PTD4 // Pin used for motor 1.
gabdo 50:197a18e49eb4 19 #define MOTOR2 PTA12 // Pin used for motor 2.
gabdo 50:197a18e49eb4 20 #define MOTOR3 PTA4 // Pin used for motor 3.
gabdo 56:a550127695b2 21 #define MOTOR4 PTA5 // Pin used for motor 4.
gabdo 0:8681037b9a18 22
gabdo 9:9e0d0ba5b6b1 23 // Xbee constants.
gabdo 56:a550127695b2 24 #define TXPIN PTA2 // Pin used for xbee TX.
gabdo 56:a550127695b2 25 #define RXPIN PTA1 // Pin used for xbee RX.
gabdo 0:8681037b9a18 26
oprospero 10:af3be8c6aad7 27
gabdo 9:9e0d0ba5b6b1 28 // Sensor constants.
gabdo 9:9e0d0ba5b6b1 29 #define MMA8451_I2C_ADDRESS (0x1d<<1) // Address of I2C accelerometer.
gabdo 50:197a18e49eb4 30 #define ACCSDA PTE25 // Pin for accelerometer SDA line.
gabdo 50:197a18e49eb4 31 #define ACCSCL PTE24 // Pin for accelerometer SCL line.
gabdo 44:a30ba531f614 32
gabdo 9:9e0d0ba5b6b1 33 // PID constants.
gabdo 56:a550127695b2 34 #define DEFAULT_WINDUP_GUARD 5.0 // Integral windup.
oprospero 62:70fc58d4be9b 35 #define PID_P 1.0 // Proportional gain.
gabdo 56:a550127695b2 36 #define PID_I 0.0 // Integral gain.
gabdo 56:a550127695b2 37 #define PID_D 0.0 // Derivative gain.
gabdo 59:9dfd9169a5e7 38 #define MOTOR_UPDATE 150.0 // Motor update speed.
dereklmc 6:21ae5e53bb5f 39
gabdo 0:8681037b9a18 40 class quadCommand
gabdo 0:8681037b9a18 41 {
gabdo 0:8681037b9a18 42 public:
gabdo 56:a550127695b2 43 quadCommand(); // Constructor.
gabdo 56:a550127695b2 44 void run(); // The main loop.
gabdo 56:a550127695b2 45 void rxInput(); // Receive data from the Xbee.
gabdo 56:a550127695b2 46 void updateMotors(); // Send PID values to the motors.
gabdo 56:a550127695b2 47 void updateCurrent(); // Update the current telemetry.
dereklmc 20:4cdabb792d16 48
gabdo 0:8681037b9a18 49 private:
gabdo 56:a550127695b2 50 motor *myMotors[4]; // Array of motor objects.
gabdo 56:a550127695b2 51 com *myCom; // The com object for Xbee communication.
oprospero 62:70fc58d4be9b 52 //sensors *world; // Sensors used to observe the world.
oprospero 62:70fc58d4be9b 53 DCM *world;
gabdo 55:bca9c9e92da6 54
gabdo 58:983801808a94 55 PID *pidPitch; // PID for pitch.
gabdo 58:983801808a94 56 PID *pidRoll; // PID for roll.
gabdo 58:983801808a94 57 PID *pidYaw; // PID for yaw.
gabdo 0:8681037b9a18 58
oprospero 62:70fc58d4be9b 59 Timer timer;
gabdo 56:a550127695b2 60 Ticker motorProcess; // Timer for updating the motors.
oprospero 62:70fc58d4be9b 61
oprospero 62:70fc58d4be9b 62 float G_Dt;
gabdo 56:a550127695b2 63 float currentThrottle; // Current throttle.
gabdo 56:a550127695b2 64 float currentPitch; // Current pitch.
gabdo 56:a550127695b2 65 float currentRoll; // Current roll.
gabdo 56:a550127695b2 66 float currentYaw; // Current yaw.
gabdo 0:8681037b9a18 67
gabdo 56:a550127695b2 68 float pitchTrim; // Trim the pitch.
gabdo 56:a550127695b2 69 float rollTrim; // Trim the roll.
gabdo 59:9dfd9169a5e7 70 float yawTrim; // Trim the yaw.
dereklmc 6:21ae5e53bb5f 71
gabdo 56:a550127695b2 72 float targetThrottle; // Desired throttle.
gabdo 56:a550127695b2 73 float targetPitch; // Desired pitch.
gabdo 56:a550127695b2 74 float targetRoll; // Desired roll.
gabdo 56:a550127695b2 75 float targetYaw; // Desired yaw.
oprospero 62:70fc58d4be9b 76
oprospero 62:70fc58d4be9b 77 long timestamp_old;
oprospero 62:70fc58d4be9b 78 long timestamp;
gabdo 0:8681037b9a18 79 };
gabdo 0:8681037b9a18 80
gabdo 0:8681037b9a18 81 #endif