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.
motors.cpp@0:7a97ebb833eb, 2019-05-05 (annotated)
- Committer:
- rzalog
- Date:
- Sun May 05 00:02:11 2019 +0000
- Revision:
- 0:7a97ebb833eb
test commit;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| rzalog | 0:7a97ebb833eb | 1 | #include "motors.h" |
| rzalog | 0:7a97ebb833eb | 2 | #include "mbed.h" |
| rzalog | 0:7a97ebb833eb | 3 | #include "pins.h" |
| rzalog | 0:7a97ebb833eb | 4 | |
| rzalog | 0:7a97ebb833eb | 5 | PwmOut m_RF(MOTOR_RF); |
| rzalog | 0:7a97ebb833eb | 6 | PwmOut m_RB(MOTOR_RB); |
| rzalog | 0:7a97ebb833eb | 7 | PwmOut m_LF(MOTOR_LF); |
| rzalog | 0:7a97ebb833eb | 8 | PwmOut m_LB(MOTOR_LB); |
| rzalog | 0:7a97ebb833eb | 9 | |
| rzalog | 0:7a97ebb833eb | 10 | /*** |
| rzalog | 0:7a97ebb833eb | 11 | * Assignment 2 |
| rzalog | 0:7a97ebb833eb | 12 | * |
| rzalog | 0:7a97ebb833eb | 13 | * Add logic to set the PWM based on postiive/negative number. |
| rzalog | 0:7a97ebb833eb | 14 | ***/ |
| rzalog | 0:7a97ebb833eb | 15 | |
| rzalog | 0:7a97ebb833eb | 16 | void Motors::setMotorPwm(int motor, float pwm) { |
| rzalog | 0:7a97ebb833eb | 17 | if (abs(pwm) > MAX_SPEED) { |
| rzalog | 0:7a97ebb833eb | 18 | if (pwm > 0) pwm = MAX_SPEED; |
| rzalog | 0:7a97ebb833eb | 19 | else if (pwm < 0) pwm = -MAX_SPEED; |
| rzalog | 0:7a97ebb833eb | 20 | } |
| rzalog | 0:7a97ebb833eb | 21 | else if (abs(pwm) < MIN_SPEED) { |
| rzalog | 0:7a97ebb833eb | 22 | if (pwm > 0) pwm = MIN_SPEED; |
| rzalog | 0:7a97ebb833eb | 23 | else if (pwm < 0) pwm = -MIN_SPEED; |
| rzalog | 0:7a97ebb833eb | 24 | } |
| rzalog | 0:7a97ebb833eb | 25 | |
| rzalog | 0:7a97ebb833eb | 26 | // Use the "PwmOut" objects defined above |
| rzalog | 0:7a97ebb833eb | 27 | // Hint: Stop your backwards/forward motor before going forward/backwards. |
| rzalog | 0:7a97ebb833eb | 28 | if (pwm > 0) { |
| rzalog | 0:7a97ebb833eb | 29 | if (motor == RIGHT_MOTOR) { |
| rzalog | 0:7a97ebb833eb | 30 | m_RB = 0.f; |
| rzalog | 0:7a97ebb833eb | 31 | m_RF = pwm; |
| rzalog | 0:7a97ebb833eb | 32 | } else { |
| rzalog | 0:7a97ebb833eb | 33 | m_LB = 0.f; |
| rzalog | 0:7a97ebb833eb | 34 | m_LF = pwm; |
| rzalog | 0:7a97ebb833eb | 35 | } |
| rzalog | 0:7a97ebb833eb | 36 | } else { |
| rzalog | 0:7a97ebb833eb | 37 | if (motor == RIGHT_MOTOR) { |
| rzalog | 0:7a97ebb833eb | 38 | m_RF = 0.f; |
| rzalog | 0:7a97ebb833eb | 39 | m_RB = abs(pwm); |
| rzalog | 0:7a97ebb833eb | 40 | } else { |
| rzalog | 0:7a97ebb833eb | 41 | m_LF = 0.f; |
| rzalog | 0:7a97ebb833eb | 42 | m_LB = abs(pwm); |
| rzalog | 0:7a97ebb833eb | 43 | } |
| rzalog | 0:7a97ebb833eb | 44 | } |
| rzalog | 0:7a97ebb833eb | 45 | } |
| rzalog | 0:7a97ebb833eb | 46 | |
| rzalog | 0:7a97ebb833eb | 47 | Motors::Motors() { |
| rzalog | 0:7a97ebb833eb | 48 | // DO NOT initialize PWM!!! It breaks the mouse. |
| rzalog | 0:7a97ebb833eb | 49 | } |
| rzalog | 0:7a97ebb833eb | 50 | |
| rzalog | 0:7a97ebb833eb | 51 | void Motors::stop() { |
| rzalog | 0:7a97ebb833eb | 52 | setRightPwm(0); |
| rzalog | 0:7a97ebb833eb | 53 | setLeftPwm(0); |
| rzalog | 0:7a97ebb833eb | 54 | } |
| rzalog | 0:7a97ebb833eb | 55 | |
| rzalog | 0:7a97ebb833eb | 56 | void Motors::setRightPwm(float pwm) { |
| rzalog | 0:7a97ebb833eb | 57 | m_rpwm = pwm; |
| rzalog | 0:7a97ebb833eb | 58 | setMotorPwm(RIGHT_MOTOR, pwm); |
| rzalog | 0:7a97ebb833eb | 59 | } |
| rzalog | 0:7a97ebb833eb | 60 | |
| rzalog | 0:7a97ebb833eb | 61 | void Motors::setLeftPwm(float pwm) { |
| rzalog | 0:7a97ebb833eb | 62 | m_lpwm = pwm; |
| rzalog | 0:7a97ebb833eb | 63 | setMotorPwm(LEFT_MOTOR, pwm); |
| rzalog | 0:7a97ebb833eb | 64 | } |
| rzalog | 0:7a97ebb833eb | 65 | |
| rzalog | 0:7a97ebb833eb | 66 |