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

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