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-16
Revision:
1:045edcf091f3
Parent:
0:0010a5abcc31
Child:
2:b3b771c8f7d1

File content as of revision 1:045edcf091f3:

#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 90
#define RC_YAW_RATE_MIN -90
#define RC_ROLL_RATE_MAX 90
#define RC_ROLL_RATE_MIN -90
#define RC_PITCH_RATE_MAX 90
#define RC_PITCH_RATE_MIN -90
#define RC_ROLL_ANGLE_MAX 45
#define RC_ROLL_ANGLE_MIN -45
#define RC_PITCH_ANGLE_MAX 45
#define RC_PITCH_ANGLE_MIN -45
#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
#define RCMIN -127
#define RCMAX 127

//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 _rcMappedCommands[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;

//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
InterruptIn _PPMSignal(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