A quadcopter control Software (Still in development). achieved single axis stability!!!!! released for others benefit. if you'd like to help co-develop this code, then please let me know
Dependencies: MovingAverageFilter MyI2C PID RC mbed-rtos mbed
Currently on hold, due to the fact that i don't own a RX/TX system
Motors.h
- Committer:
- KarimAzzouz
- Date:
- 2013-08-27
- Revision:
- 1:e08a4f517989
- Parent:
- 0:54b67cd15a5b
File content as of revision 1:e08a4f517989:
#define RefreshRate 2500 // in us :400Hz static uint16 Constrain(uint16 a , uint16 b, uint16 c){ if(a<b) return b; else if(a>c)return c; else return a; } void CalibrateESC(void){ FrontMotor.period_us(RefreshRate); // setting one will by default set all other pins to the same period /*FrontMotor.pulsewidth_us(2000); RearMotor.pulsewidth_us(2000); LeftMotor.pulsewidth_us(2000); RightMotor.pulsewidth_us(2000); wait(2); still in testing phase */ FrontMotor.pulsewidth_us(1000); RearMotor.pulsewidth_us(1000); LeftMotor.pulsewidth_us(1000); RightMotor.pulsewidth_us(1000); wait(2); } void updateMotors(int16 PitchCommand,int16 RollCommand){ if(Throttle>=1200){ Mspeed[0] = Constrain((Throttle+PitchCommand),1200,2000); Mspeed[1] = Constrain((Throttle-PitchCommand),1200,2000); Mspeed[2] = Constrain((Throttle+RollCommand),1200,2000); Mspeed[3] = Constrain((Throttle-RollCommand),1200,2000); } else{ Mspeed[0] = 1000; Mspeed[1] = 1000; Mspeed[2] = 1000; Mspeed[3] = 1000; } FrontMotor.pulsewidth_us(Mspeed[0]); RearMotor.pulsewidth_us(Mspeed[1]); LeftMotor.pulsewidth_us(Mspeed[2]); RightMotor.pulsewidth_us(Mspeed[3]); }