Alex Pirciu
/
BFMC
a
src/Move/move.cpp@1:ceee5a608e7c, 2019-03-28 (annotated)
- Committer:
- alexpirciu
- Date:
- Thu Mar 28 07:44:42 2019 +0000
- Revision:
- 1:ceee5a608e7c
assa
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alexpirciu | 1:ceee5a608e7c | 1 | /** |
alexpirciu | 1:ceee5a608e7c | 2 | ****************************************************************************** |
alexpirciu | 1:ceee5a608e7c | 3 | * @file Move.cpp |
alexpirciu | 1:ceee5a608e7c | 4 | * @author RBRO/PJ-IU |
alexpirciu | 1:ceee5a608e7c | 5 | * @version V1.0.0 |
alexpirciu | 1:ceee5a608e7c | 6 | * @date day-month-year |
alexpirciu | 1:ceee5a608e7c | 7 | * @brief This file contains the class definition for the moving |
alexpirciu | 1:ceee5a608e7c | 8 | * functionality. |
alexpirciu | 1:ceee5a608e7c | 9 | ****************************************************************************** |
alexpirciu | 1:ceee5a608e7c | 10 | */ |
alexpirciu | 1:ceee5a608e7c | 11 | |
alexpirciu | 1:ceee5a608e7c | 12 | #include "mbed.h" |
alexpirciu | 1:ceee5a608e7c | 13 | #include <Move/move.hpp> |
alexpirciu | 1:ceee5a608e7c | 14 | //#include <array.h> |
alexpirciu | 1:ceee5a608e7c | 15 | |
alexpirciu | 1:ceee5a608e7c | 16 | /** \brief Move Class constructor |
alexpirciu | 1:ceee5a608e7c | 17 | * |
alexpirciu | 1:ceee5a608e7c | 18 | * Constructor method |
alexpirciu | 1:ceee5a608e7c | 19 | * |
alexpirciu | 1:ceee5a608e7c | 20 | * @param _pwm_servo |
alexpirciu | 1:ceee5a608e7c | 21 | * @param _pwm_driver |
alexpirciu | 1:ceee5a608e7c | 22 | * @param _ina_driver |
alexpirciu | 1:ceee5a608e7c | 23 | * @param _inb_driver |
alexpirciu | 1:ceee5a608e7c | 24 | * @param _current_driver |
alexpirciu | 1:ceee5a608e7c | 25 | */ |
alexpirciu | 1:ceee5a608e7c | 26 | Move::Move( |
alexpirciu | 1:ceee5a608e7c | 27 | PinName _pwm_servo, |
alexpirciu | 1:ceee5a608e7c | 28 | PinName _pwm_driver, |
alexpirciu | 1:ceee5a608e7c | 29 | PinName _ina_driver, |
alexpirciu | 1:ceee5a608e7c | 30 | PinName _inb_driver, |
alexpirciu | 1:ceee5a608e7c | 31 | PinName _current_driver) |
alexpirciu | 1:ceee5a608e7c | 32 | :servo(_pwm_servo), |
alexpirciu | 1:ceee5a608e7c | 33 | vnh(_pwm_driver,_ina_driver,_inb_driver,_current_driver) |
alexpirciu | 1:ceee5a608e7c | 34 | { |
alexpirciu | 1:ceee5a608e7c | 35 | }; |
alexpirciu | 1:ceee5a608e7c | 36 | |
alexpirciu | 1:ceee5a608e7c | 37 | /** \brief Move Class destructor |
alexpirciu | 1:ceee5a608e7c | 38 | * |
alexpirciu | 1:ceee5a608e7c | 39 | * Destructor method |
alexpirciu | 1:ceee5a608e7c | 40 | * |
alexpirciu | 1:ceee5a608e7c | 41 | * |
alexpirciu | 1:ceee5a608e7c | 42 | */ |
alexpirciu | 1:ceee5a608e7c | 43 | Move::~Move() |
alexpirciu | 1:ceee5a608e7c | 44 | { |
alexpirciu | 1:ceee5a608e7c | 45 | }; |
alexpirciu | 1:ceee5a608e7c | 46 | |
alexpirciu | 1:ceee5a608e7c | 47 | /** \brief Steer method |
alexpirciu | 1:ceee5a608e7c | 48 | * |
alexpirciu | 1:ceee5a608e7c | 49 | * @param angle |
alexpirciu | 1:ceee5a608e7c | 50 | * |
alexpirciu | 1:ceee5a608e7c | 51 | */ |
alexpirciu | 1:ceee5a608e7c | 52 | void Move::Steer(float angle) |
alexpirciu | 1:ceee5a608e7c | 53 | { |
alexpirciu | 1:ceee5a608e7c | 54 | if ((angle <= 23) && (angle >= -23)) |
alexpirciu | 1:ceee5a608e7c | 55 | servo.SetAngle(angle); |
alexpirciu | 1:ceee5a608e7c | 56 | }; |
alexpirciu | 1:ceee5a608e7c | 57 | |
alexpirciu | 1:ceee5a608e7c | 58 | /** \brief Move method |
alexpirciu | 1:ceee5a608e7c | 59 | * |
alexpirciu | 1:ceee5a608e7c | 60 | * @param speed The Pwm value, must belong to [0,100]. |
alexpirciu | 1:ceee5a608e7c | 61 | * |
alexpirciu | 1:ceee5a608e7c | 62 | */ |
alexpirciu | 1:ceee5a608e7c | 63 | void Move::Speed(float speed) |
alexpirciu | 1:ceee5a608e7c | 64 | { |
alexpirciu | 1:ceee5a608e7c | 65 | speed /=100; |
alexpirciu | 1:ceee5a608e7c | 66 | vnh.Run(speed); |
alexpirciu | 1:ceee5a608e7c | 67 | }; |
alexpirciu | 1:ceee5a608e7c | 68 | |
alexpirciu | 1:ceee5a608e7c | 69 | /** \brief Brake method |
alexpirciu | 1:ceee5a608e7c | 70 | * |
alexpirciu | 1:ceee5a608e7c | 71 | * |
alexpirciu | 1:ceee5a608e7c | 72 | * |
alexpirciu | 1:ceee5a608e7c | 73 | */ |
alexpirciu | 1:ceee5a608e7c | 74 | void Move::Brake() |
alexpirciu | 1:ceee5a608e7c | 75 | { |
alexpirciu | 1:ceee5a608e7c | 76 | vnh.Brake(); |
alexpirciu | 1:ceee5a608e7c | 77 | } |
alexpirciu | 1:ceee5a608e7c | 78 | |
alexpirciu | 1:ceee5a608e7c | 79 | /** \brief Hard brake method |
alexpirciu | 1:ceee5a608e7c | 80 | * |
alexpirciu | 1:ceee5a608e7c | 81 | * @param f_speed The Pwm value, must belong to [0,100]. |
alexpirciu | 1:ceee5a608e7c | 82 | * |
alexpirciu | 1:ceee5a608e7c | 83 | */ |
alexpirciu | 1:ceee5a608e7c | 84 | void Move::Inverse(float f_speed) |
alexpirciu | 1:ceee5a608e7c | 85 | { |
alexpirciu | 1:ceee5a608e7c | 86 | f_speed /=100; |
alexpirciu | 1:ceee5a608e7c | 87 | vnh.Inverse(f_speed); |
alexpirciu | 1:ceee5a608e7c | 88 | } |
alexpirciu | 1:ceee5a608e7c | 89 | |
alexpirciu | 1:ceee5a608e7c | 90 | /** \brief Car testing method |
alexpirciu | 1:ceee5a608e7c | 91 | * |
alexpirciu | 1:ceee5a608e7c | 92 | * |
alexpirciu | 1:ceee5a608e7c | 93 | * |
alexpirciu | 1:ceee5a608e7c | 94 | */ |
alexpirciu | 1:ceee5a608e7c | 95 | void Move::TestCar() |
alexpirciu | 1:ceee5a608e7c | 96 | { |
alexpirciu | 1:ceee5a608e7c | 97 | Steer(20); |
alexpirciu | 1:ceee5a608e7c | 98 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 99 | Steer(0); |
alexpirciu | 1:ceee5a608e7c | 100 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 101 | Steer(-20); |
alexpirciu | 1:ceee5a608e7c | 102 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 103 | ResetCar(); |
alexpirciu | 1:ceee5a608e7c | 104 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 105 | Speed(25); |
alexpirciu | 1:ceee5a608e7c | 106 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 107 | Speed(0); |
alexpirciu | 1:ceee5a608e7c | 108 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 109 | Speed(-25); |
alexpirciu | 1:ceee5a608e7c | 110 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 111 | ResetCar(); |
alexpirciu | 1:ceee5a608e7c | 112 | wait(1); |
alexpirciu | 1:ceee5a608e7c | 113 | }; |
alexpirciu | 1:ceee5a608e7c | 114 | |
alexpirciu | 1:ceee5a608e7c | 115 | /** \brief Reset speed and steer method |
alexpirciu | 1:ceee5a608e7c | 116 | * |
alexpirciu | 1:ceee5a608e7c | 117 | * |
alexpirciu | 1:ceee5a608e7c | 118 | * |
alexpirciu | 1:ceee5a608e7c | 119 | */ |
alexpirciu | 1:ceee5a608e7c | 120 | void Move::ResetCar() |
alexpirciu | 1:ceee5a608e7c | 121 | { |
alexpirciu | 1:ceee5a608e7c | 122 | Steer(0); |
alexpirciu | 1:ceee5a608e7c | 123 | Speed(0); |
alexpirciu | 1:ceee5a608e7c | 124 | }; |
alexpirciu | 1:ceee5a608e7c | 125 | |
alexpirciu | 1:ceee5a608e7c | 126 | /** \brief Get bridge (driver) object reference method |
alexpirciu | 1:ceee5a608e7c | 127 | * |
alexpirciu | 1:ceee5a608e7c | 128 | * |
alexpirciu | 1:ceee5a608e7c | 129 | * @return reference to VNH object |
alexpirciu | 1:ceee5a608e7c | 130 | */ |
alexpirciu | 1:ceee5a608e7c | 131 | drivers::VNH& Move::getVNH() |
alexpirciu | 1:ceee5a608e7c | 132 | { |
alexpirciu | 1:ceee5a608e7c | 133 | return vnh; |
alexpirciu | 1:ceee5a608e7c | 134 | } |