A library used for controlling a quadcopter. It provides an easy to use interface, which allows to mount, calibrate and run motors. It is also able to calibrate the actual speed according to calculated PID roll & pitch difference. I used the original Servo library as ESC modules use the same PWM signal as Servo motors.
Diff: Quadcopter.h
- Revision:
- 3:84d246dccb8d
- Parent:
- 0:341a08dbf9ba
- Child:
- 4:90ce5817667b
--- a/Quadcopter.h Thu Feb 19 12:19:17 2015 +0000 +++ b/Quadcopter.h Thu Feb 19 23:16:00 2015 +0000 @@ -4,18 +4,35 @@ #include "mbed.h" #include "Servo.h" +//class used for creating a user friendly interface for controlling quadcopter motors + class Quadcopter { public: + //constructor of the instance. FL correspond to Front_Left, FR to Front Right... Quadcopter(PinName FL, PinName FR, PinName BL, PinName BR); - + + //function used to calibrate all 4 ESC before actually flying the copter + //it takes min and max values, which are in range from 0.0 to 1.0 + //it does not matter which of inputs is min and which is max as function checks that itself + //If inputs are out of boundaries, min value becomes 0.0, and max value becomes 1.0 automatically void calibrate (float min, float max); + + //function for runing motors + //Function takes array of 4 variables, which corresponds to the speed for all 4 motors + //speeds are in range from 0.0 to 1.0 void run (float* speed); + + //function used calculate the speed at which each of the motors should run to be able to stabilise the quadcopter + //speed here is the current speed for each motor, actSpeed is the output speed at which motors should run + //rollDiff & pitchDiff are both calculated using PID library function PID::compute(); void stabilise (float* speed, float* actSpeed, float rollDiff, float pitchDiff); + private: - float MIN_CALIBRATE; - float MAX_CALIBRATE; - Servo* motor[4]; - float map(float x, float in_min, float in_max, float out_min, float out_max); + + float min_calibrate; //min value at which each motor is calibrated + float max_calibrate //max value ... + Servo* motor[4]; //motors are used with Servo library as ESC take the same input as usual Servo motors... + float map(float x, float in_min, float in_max, float out_min, float out_max); //function for mapping values in the range from min calibrate to max_calibrate }; #endif \ No newline at end of file