a

Dependencies:   mbed mbed-rtos

Committer:
alexpirciu
Date:
Thu Mar 28 07:44:42 2019 +0000
Revision:
1:ceee5a608e7c
assa

Who changed what in which revision?

UserRevisionLine numberNew 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 }