Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos MotionSensor EthernetInterface
Revision 13:f7a7fe9b5c00, committed 2016-04-30
- Comitter:
- drelliak
- Date:
- Sat Apr 30 21:28:27 2016 +0000
- Parent:
- 12:273752f540be
- Child:
- 14:e8cd237c8639
- Commit message:
- minor fixes
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Apr 30 21:23:13 2016 +0000
+++ b/main.cpp Sat Apr 30 21:28:27 2016 +0000
@@ -21,7 +21,7 @@
Serial ser(USBTX, USBRX); // Initialize Serial port
PwmOut servo(PTD3); // Servo connected to pin PTD3
-
+Motor motor;
FXOS8700Q_mag mag(PTE25,PTE24,FXOS8700CQ_SLAVE_ADDR1);
FXAS21002 gyro(PTE25,PTE24);
@@ -39,13 +39,6 @@
float processMagAngle();
void magCal();
-// State variables
-float velocity = 0;
-void readProtocol();
-void brakeMotor();
-void reverseMotor(int speed);
-void setVelocity(int new_velocity);
-
int main(){
gyro.gyro_config(MODE_2);
gyro.start_measure(GYRO_PERIOD);
@@ -66,7 +59,7 @@
break;
case BRAKE:
//ser.printf("sending green signal to led\r\n");
- brakeMotor();
+ motor.brakeMotor();
break;
case ANG_RST:
//ser.printf("sending blue signal to led\r\n");
@@ -78,8 +71,7 @@
reference = get_ang_ref(ser);
break;
case GND_SPEED:
- velocity = get_gnd_speed(ser);
- setMotorPWM(velocity,motor);
+ motor.setVelocity(get_gnd_speed(ser));
break;
case PID_PARAMS:
ser.putc('p');
@@ -132,47 +124,6 @@
setServoPWM(u*100/(PI/8), servo);
}
/* Brake function, braking while the gyroscope is still integrating will cause considerably error in the measurement. */
-void brakeMotor(){
- if(velocity >= 0){
- setMotorPWM(-BRAKE_CONSTANT, motor);
- wait(BRAKE_WAIT);
- velocity = 0;
- setMotorPWM(velocity,motor);
- }
- else {
- setVelocity(0);
- }
-}
-void reverseMotor(int speed){
- for(int i=0 ; i >= -speed; i--){
- setMotorPWM((float)i,motor);
- wait_ms(13.5);
- }
- for(int i=-speed ; i <= 0; i++){
- setMotorPWM((float)i,motor);
- wait_ms(13.5);
- }
- for(int i=0 ; i >= -speed; i--){
- setMotorPWM((float)i,motor);
- wait_ms(13.5);
- }
-}
-void setVelocity(int new_velocity){
- if( velocity > new_velocity){
- for(; velocity >= new_velocity; velocity--){
- setMotorPWM(velocity,motor);
- wait_ms(PWM_PERIOD);
- }
- velocity++;
- }
- else if(velocity < new_velocity){
- for(; velocity <= new_velocity; velocity++){
- setMotorPWM(velocity,motor);
- wait_ms(PWM_PERIOD);
- }
- velocity--;
- }
-}
/* Function to normalize the magnetometer reading */
void magCal(){
printf("Starting Calibration");