Quadcopter software. Flying - Contact me for more details or a copy of the PC ground station code
Dependencies: ConfigFile PID PPM MODSERIAL mbed-rtos mbed MaxbotixDriver TinyGPS filter
hardware.h
- Committer:
- joe4465
- Date:
- 2014-05-09
- Revision:
- 0:0010a5abcc31
- Child:
- 1:045edcf091f3
File content as of revision 0:0010a5abcc31:
#include "mbed.h" #include "rtos.h" #include "FreeIMU.h" #include "PID.h" #include "ConfigFile.h" #include "beep.h" #include <sstream> #ifndef HARDWARE_H #define HARDWARE_H //Constants #define IMU_YAW_ANGLE_MAX 180 #define IMU_YAW_ANGLE_MIN -180 #define IMU_ROLL_ANGLE_MAX 90 #define IMU_ROLL_ANGLE_MIN -90 #define IMU_PITCH_ANGLE_MAX 90 #define IMU_PITCH_ANGLE_MIN -90 #define IMU_YAW_RATE_MAX 360 #define IMU_YAW_RATE_MIN -360 #define IMU_ROLL_RATE_MAX 360 #define IMU_ROLL_RATE_MIN -360 #define IMU_PITCH_RATE_MAX 360 #define IMU_PITCH_RATE_MIN -360 #define RC_YAW_RATE_MAX 360 #define RC_YAW_RATE_MIN -360 #define RC_ROLL_RATE_MAX 360 #define RC_ROLL_RATE_MIN -360 #define RC_PITCH_RATE_MAX 360 #define RC_PITCH_RATE_MIN -360 #define RC_ROLL_ANGLE_MAX 25 #define RC_ROLL_ANGLE_MIN -25 #define RC_PITCH_ANGLE_MAX 25 #define RC_PITCH_ANGLE_MIN -25 #define RC_THRUST_MAX 1 #define RC_THRUST_MIN 0 #define MOTORS_OFF 0 #define MOTORS_MIN 1060 #define MOTORS_MAX 1860 #define MOTORS_ARMED 1000 #define RATE_PID_CONTROLLER_OUTPUT_MAX 1 #define RATE_PID_CONTROLLER_OUTPUT_MIN -1 #define UPDATE_FREQUENCY 500 #define MOTOR_PWM_FREQUENCY 500 //Shared Variables float _yawRatePIDControllerP, _yawRatePIDControllerI, _yawRatePIDControllerD, _pitchRatePIDControllerP, _pitchRatePIDControllerI, _pitchRatePIDControllerD, _rollRatePIDControllerP, _rollRatePIDControllerI, _rollRatePIDControllerD; float _yawStabPIDControllerP, _yawStabPIDControllerI, _yawStabPIDControllerD, _pitchStabPIDControllerP, _pitchStabPIDControllerI, _pitchStabPIDControllerD, _rollStabPIDControllerP, _rollStabPIDControllerI, _rollStabPIDControllerD; float _zeroValues[3] = {0,0,0}; //Yaw, pitch, roll float _ratePIDControllerOutputs[3] = {0,0,0}; //Yaw, pitch, roll float _stabPIDControllerOutputs[3] = {0,0,0}; //Yaw, pitch, roll float _motorPower [4] = {0,0,0,0}; float _ypr[3] = {0,0,0}; // Yaw, pitch, roll float _rcCommands[4] = {0,0,0,0}; //Yaw, pitch, roll, thrust bool _armed = false; bool _rate = false; bool _stab = true; bool _initialised = true; //PID controllers PID *_yawRatePIDController; PID *_pitchRatePIDController; PID *_rollRatePIDController; PID *_yawStabPIDController; PID *_pitchStabPIDController; PID *_rollStabPIDController; //Config file LocalFileSystem local("local"); ConfigFile _configFile; //Threads Thread *_statusThread; Thread *_serialPortMonitorThread; Thread *_flightControllerThread; //Timers RtosTimer *_updateTimer; //HARDWARE//////////////////////////////////////////////////////////////////////////////////// // M1 M2 // \ / // \/ // /\ // / \ // M3 M4 //Motors PwmOut _motor1(p22); PwmOut _motor2(p23); PwmOut _motor3(p24); PwmOut _motor4(p25); //USB serial Serial _wiredSerial(USBTX, USBRX); // tx, rx //Wireless Serial Serial _wirelessSerial(p9, p10); //PPM DigitalIn _ppm(p7); //Battery monitor DigitalIn _batteryMonitor(p8); //Onboard LED's DigitalOut _led1(LED1); DigitalOut _led2(LED2); DigitalOut _led3(LED3); DigitalOut _led4(LED4); //External LED's DigitalOut _output1(p11); DigitalOut _output2(p12); DigitalOut _output3(p5); DigitalOut _output4(p6); //Buzzer Beep _buzzer(p26); //IMU FreeIMU _freeIMU; #endif