Quadcopter working with accelerômeter and accelerometer, and bluetooth radio for communication

Dependencies:   mbed

Committer:
jose_claudiojr
Date:
Tue May 21 14:12:13 2013 +0000
Revision:
0:56b8c86181b1
Quadcopter code with accelerometer and gyroscope.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jose_claudiojr 0:56b8c86181b1 1 #include "Motor.h"
jose_claudiojr 0:56b8c86181b1 2
jose_claudiojr 0:56b8c86181b1 3 Motor::Motor(PinName pwm, float _period/*, float* linCoef, float lowerSat, float upperSat*/) : PwmOut(pwm)
jose_claudiojr 0:56b8c86181b1 4 {
jose_claudiojr 0:56b8c86181b1 5 //period(_period);
jose_claudiojr 0:56b8c86181b1 6 period_us(_period);
jose_claudiojr 0:56b8c86181b1 7
jose_claudiojr 0:56b8c86181b1 8 currentPower = 0;
jose_claudiojr 0:56b8c86181b1 9
jose_claudiojr 0:56b8c86181b1 10 //setPower(currentPower);
jose_claudiojr 0:56b8c86181b1 11
jose_claudiojr 0:56b8c86181b1 12 //this->linCoef = linCoef;
jose_claudiojr 0:56b8c86181b1 13
jose_claudiojr 0:56b8c86181b1 14 //this->lowerSat = lowerSat;
jose_claudiojr 0:56b8c86181b1 15 //this->upperSat = upperSat;
jose_claudiojr 0:56b8c86181b1 16 }
jose_claudiojr 0:56b8c86181b1 17
jose_claudiojr 0:56b8c86181b1 18 /*Motor::Motor(PinName pwm, float periodms) : PwmOut(pwm)
jose_claudiojr 0:56b8c86181b1 19 {
jose_claudiojr 0:56b8c86181b1 20 //Motor(pwm, (periodms*1000), new float[1], 0, 100);
jose_claudiojr 0:56b8c86181b1 21 period_ms(periodms);
jose_claudiojr 0:56b8c86181b1 22
jose_claudiojr 0:56b8c86181b1 23 //currentPower = 0;
jose_claudiojr 0:56b8c86181b1 24
jose_claudiojr 0:56b8c86181b1 25 //this->linCoef = new float[1];
jose_claudiojr 0:56b8c86181b1 26
jose_claudiojr 0:56b8c86181b1 27 //this->lowerSat = 0;
jose_claudiojr 0:56b8c86181b1 28 //this->upperSat = 100;
jose_claudiojr 0:56b8c86181b1 29 }*/
jose_claudiojr 0:56b8c86181b1 30
jose_claudiojr 0:56b8c86181b1 31 void Motor::setPower(float power)
jose_claudiojr 0:56b8c86181b1 32 {
jose_claudiojr 0:56b8c86181b1 33 power = clampFloat(power, 0.0, 100.0);
jose_claudiojr 0:56b8c86181b1 34
jose_claudiojr 0:56b8c86181b1 35 //pulsewidth(PWM_MIN + (power / 100.0) * PWM_DT);
jose_claudiojr 0:56b8c86181b1 36 write( (100-(PWM_MIN + power))/100);
jose_claudiojr 0:56b8c86181b1 37 currentPower = power;
jose_claudiojr 0:56b8c86181b1 38 }
jose_claudiojr 0:56b8c86181b1 39
jose_claudiojr 0:56b8c86181b1 40 void Motor::setPowerLin(float power)
jose_claudiojr 0:56b8c86181b1 41 {
jose_claudiojr 0:56b8c86181b1 42 setPower(power);
jose_claudiojr 0:56b8c86181b1 43 /*
jose_claudiojr 0:56b8c86181b1 44 float pwm = 0;
jose_claudiojr 0:56b8c86181b1 45
jose_claudiojr 0:56b8c86181b1 46 power = clampFloat(power, 0.0, 100.0);
jose_claudiojr 0:56b8c86181b1 47
jose_claudiojr 0:56b8c86181b1 48 for (int i = 0; i < 5; i++)
jose_claudiojr 0:56b8c86181b1 49 {
jose_claudiojr 0:56b8c86181b1 50 pwm += linCoef[4-i] * pow(power/100.0, i);
jose_claudiojr 0:56b8c86181b1 51 }
jose_claudiojr 0:56b8c86181b1 52
jose_claudiojr 0:56b8c86181b1 53 setPower(lowerSat + pwm*(upperSat - lowerSat));
jose_claudiojr 0:56b8c86181b1 54 */
jose_claudiojr 0:56b8c86181b1 55 }
jose_claudiojr 0:56b8c86181b1 56 void Motor::arm(int pwm_ms)
jose_claudiojr 0:56b8c86181b1 57 {
jose_claudiojr 0:56b8c86181b1 58 pulsewidth_ms(pwm_ms);
jose_claudiojr 0:56b8c86181b1 59 //write( (power)/100 );
jose_claudiojr 0:56b8c86181b1 60 }
jose_claudiojr 0:56b8c86181b1 61 void Motor::accumulatePower(float accPower)
jose_claudiojr 0:56b8c86181b1 62 {
jose_claudiojr 0:56b8c86181b1 63 setPower(currentPower + accPower);
jose_claudiojr 0:56b8c86181b1 64 }
jose_claudiojr 0:56b8c86181b1 65
jose_claudiojr 0:56b8c86181b1 66 float Motor::getPower()
jose_claudiojr 0:56b8c86181b1 67 {
jose_claudiojr 0:56b8c86181b1 68 return currentPower;
jose_claudiojr 0:56b8c86181b1 69 }