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.
Car.h@8:14e91fdf70e8, 2019-05-24 (annotated)
- Committer:
- edmugu
- Date:
- Fri May 24 03:40:06 2019 +0000
- Revision:
- 8:14e91fdf70e8
- Parent:
- 0:7676da98b5c1
stash;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
edmugu | 0:7676da98b5c1 | 1 | |
edmugu | 0:7676da98b5c1 | 2 | #ifndef MBED_MOTOR_H |
edmugu | 0:7676da98b5c1 | 3 | #define MBED_MOTOR_H |
edmugu | 0:7676da98b5c1 | 4 | |
edmugu | 0:7676da98b5c1 | 5 | #include "mbed.h" |
edmugu | 0:7676da98b5c1 | 6 | #include <Motor.h> // DC motor driver |
edmugu | 0:7676da98b5c1 | 7 | |
edmugu | 0:7676da98b5c1 | 8 | struct Car_vector { |
edmugu | 0:7676da98b5c1 | 9 | float speed; |
edmugu | 0:7676da98b5c1 | 10 | float turnCW; |
edmugu | 0:7676da98b5c1 | 11 | }; |
edmugu | 0:7676da98b5c1 | 12 | |
edmugu | 0:7676da98b5c1 | 13 | |
edmugu | 0:7676da98b5c1 | 14 | class Car { |
edmugu | 0:7676da98b5c1 | 15 | public: |
edmugu | 0:7676da98b5c1 | 16 | Car( PinName pwm1, |
edmugu | 0:7676da98b5c1 | 17 | PinName fwd1, |
edmugu | 0:7676da98b5c1 | 18 | PinName rev1, |
edmugu | 8:14e91fdf70e8 | 19 | PinName encoderA1, |
edmugu | 8:14e91fdf70e8 | 20 | PinName encoderB1, |
edmugu | 0:7676da98b5c1 | 21 | PinName pwm2, |
edmugu | 0:7676da98b5c1 | 22 | PinName fwd2, |
edmugu | 8:14e91fdf70e8 | 23 | PinName rev2, |
edmugu | 8:14e91fdf70e8 | 24 | PinName encoderA2, |
edmugu | 8:14e91fdf70e8 | 25 | PinName encoderB2 |
edmugu | 0:7676da98b5c1 | 26 | ); |
edmugu | 0:7676da98b5c1 | 27 | |
edmugu | 8:14e91fdf70e8 | 28 | //Sets the speed as thicks per second(i.e. 1 = 100% and 0.5 = 50%) |
edmugu | 0:7676da98b5c1 | 29 | void speed(float speed); |
edmugu | 0:7676da98b5c1 | 30 | float speed(void); |
edmugu | 0:7676da98b5c1 | 31 | |
edmugu | 0:7676da98b5c1 | 32 | //Sets the speed difference between the motors |
edmugu | 0:7676da98b5c1 | 33 | // Example 1: if original speed is 50% |
edmugu | 0:7676da98b5c1 | 34 | // turnCW(0.5) => rightMotor @ 25% and leftMotor @ 75% |
edmugu | 0:7676da98b5c1 | 35 | // turnCW(0.1) => rightMotor @ 45% and leftMotor @ 55% |
edmugu | 0:7676da98b5c1 | 36 | // |
edmugu | 0:7676da98b5c1 | 37 | // Example 2: if original speed is 100% |
edmugu | 0:7676da98b5c1 | 38 | // turnCW(0.5) => rightMotor @ 75% and leftMotor @ 100% |
edmugu | 0:7676da98b5c1 | 39 | // turnCW(0.1) => rightMotor @ 95% and leftMotor @ 100% |
edmugu | 0:7676da98b5c1 | 40 | void turnCW(float turn); |
edmugu | 0:7676da98b5c1 | 41 | |
edmugu | 0:7676da98b5c1 | 42 | protected: |
edmugu | 0:7676da98b5c1 | 43 | void _set_motors(void); |
edmugu | 0:7676da98b5c1 | 44 | float _clamp_speed(float sp); |
edmugu | 0:7676da98b5c1 | 45 | void _mlspeed(float sp); |
edmugu | 0:7676da98b5c1 | 46 | void _mrspeed(float sp); |
edmugu | 8:14e91fdf70e8 | 47 | |
edmugu | 0:7676da98b5c1 | 48 | |
edmugu | 0:7676da98b5c1 | 49 | float _car_speed; |
edmugu | 0:7676da98b5c1 | 50 | float _car_turn; |
edmugu | 8:14e91fdf70e8 | 51 | |
edmugu | 8:14e91fdf70e8 | 52 | time_t _last_tick_left; |
edmugu | 8:14e91fdf70e8 | 53 | time_t _last_tick_right; |
edmugu | 8:14e91fdf70e8 | 54 | DigitalIn _ml_encoderA; |
edmugu | 8:14e91fdf70e8 | 55 | DigitalIn _ml_encoderB; |
edmugu | 8:14e91fdf70e8 | 56 | DigitalIn _mr_encoderA; |
edmugu | 8:14e91fdf70e8 | 57 | DigitalIn _mr_encoderB; |
edmugu | 8:14e91fdf70e8 | 58 | bool _ml_encoderA_before; |
edmugu | 8:14e91fdf70e8 | 59 | bool _ml_encoderB_before; |
edmugu | 8:14e91fdf70e8 | 60 | bool _mr_encoderA_before; |
edmugu | 8:14e91fdf70e8 | 61 | bool _mr_encoderB_before; |
edmugu | 0:7676da98b5c1 | 62 | PwmOut _ml_pwm; |
edmugu | 0:7676da98b5c1 | 63 | PwmOut _mr_pwm; |
edmugu | 0:7676da98b5c1 | 64 | DigitalOut _ml_fwd; |
edmugu | 0:7676da98b5c1 | 65 | DigitalOut _mr_fwd; |
edmugu | 0:7676da98b5c1 | 66 | DigitalOut _ml_rev; |
edmugu | 0:7676da98b5c1 | 67 | DigitalOut _mr_rev; |
edmugu | 0:7676da98b5c1 | 68 | |
edmugu | 0:7676da98b5c1 | 69 | }; |
edmugu | 0:7676da98b5c1 | 70 | |
edmugu | 0:7676da98b5c1 | 71 | |
edmugu | 0:7676da98b5c1 | 72 | #endif |