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
Diff: hardware.h
- Revision:
- 0:0010a5abcc31
- Child:
- 1:045edcf091f3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hardware.h Fri May 09 10:04:36 2014 +0000 @@ -0,0 +1,124 @@ +#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 \ No newline at end of file