Motor class for the robot

Dependencies:   mbed

Dependents:   TEST_ENCODER

Committer:
aminomar
Date:
Wed May 04 18:47:50 2016 +0000
Revision:
0:550e01736339
motor;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aminomar 0:550e01736339 1 //libraries//
aminomar 0:550e01736339 2 #include "mbed.h"
aminomar 0:550e01736339 3 #include "Motorslam.h"
aminomar 0:550e01736339 4
aminomar 0:550e01736339 5 #define SIG_HIGH (1)
aminomar 0:550e01736339 6 #define SIG_LOW (0)
aminomar 0:550e01736339 7
aminomar 0:550e01736339 8 Motorslam::Motorslam(PinName pinPwmLeft, PinName pinLeftIn1, PinName pinLeftIn2,
aminomar 0:550e01736339 9 PinName pinPwmRight, PinName pinRightIn1, PinName pinRightIn2,
aminomar 0:550e01736339 10 PinName pinNStby):
aminomar 0:550e01736339 11
aminomar 0:550e01736339 12 pwmLeft(pinPwmLeft),
aminomar 0:550e01736339 13 leftIn1(pinLeftIn1),
aminomar 0:550e01736339 14 leftIn2(pinLeftIn2),
aminomar 0:550e01736339 15 pwmRight(pinPwmRight),
aminomar 0:550e01736339 16 rightIn1(pinRightIn1),
aminomar 0:550e01736339 17 rightIn2(pinRightIn2),
aminomar 0:550e01736339 18 nStby(pinNStby)
aminomar 0:550e01736339 19 {
aminomar 0:550e01736339 20 leftIn1 = SIG_LOW;
aminomar 0:550e01736339 21 leftIn2 = SIG_LOW;
aminomar 0:550e01736339 22 rightIn1 = SIG_LOW;
aminomar 0:550e01736339 23 rightIn2 = SIG_LOW;
aminomar 0:550e01736339 24 nStby = SIG_LOW;
aminomar 0:550e01736339 25 pwmLeft.period(DEFAULT_PWM_PERIOD);
aminomar 0:550e01736339 26 pwmLeft = DEFAULT_PWM_PULSEWIDTH;
aminomar 0:550e01736339 27 pwmRight.period(DEFAULT_PWM_PERIOD);
aminomar 0:550e01736339 28 pwmLeft = DEFAULT_PWM_PULSEWIDTH;
aminomar 0:550e01736339 29 }
aminomar 0:550e01736339 30
aminomar 0:550e01736339 31 void Motorslam::init()
aminomar 0:550e01736339 32 {
aminomar 0:550e01736339 33 leftIn1 = SIG_LOW;
aminomar 0:550e01736339 34 leftIn2 = SIG_LOW;
aminomar 0:550e01736339 35 rightIn1 = SIG_LOW;
aminomar 0:550e01736339 36 rightIn2 = SIG_LOW;
aminomar 0:550e01736339 37 nStby = SIG_LOW;
aminomar 0:550e01736339 38 pwmLeft.period(DEFAULT_PWM_PERIOD);
aminomar 0:550e01736339 39 pwmLeft = DEFAULT_PWM_PULSEWIDTH;
aminomar 0:550e01736339 40 pwmRight.period(DEFAULT_PWM_PERIOD);
aminomar 0:550e01736339 41 pwmLeft = DEFAULT_PWM_PULSEWIDTH;
aminomar 0:550e01736339 42 }
aminomar 0:550e01736339 43
aminomar 0:550e01736339 44 void Motorslam::setPwmLeft(float fPeriod, float fPulsewidth)
aminomar 0:550e01736339 45 {
aminomar 0:550e01736339 46 pwmLeft.period(fPeriod);
aminomar 0:550e01736339 47 pwmLeft = fPulsewidth;
aminomar 0:550e01736339 48 }
aminomar 0:550e01736339 49
aminomar 0:550e01736339 50 void Motorslam::setPwmLeftperiod(float fPeriod)
aminomar 0:550e01736339 51 {
aminomar 0:550e01736339 52 pwmLeft.period(fPeriod);
aminomar 0:550e01736339 53 }
aminomar 0:550e01736339 54
aminomar 0:550e01736339 55 void Motorslam::setPwmLeftpulsewidth(float fPulsewidth)
aminomar 0:550e01736339 56 {
aminomar 0:550e01736339 57 pwmLeft = fPulsewidth;
aminomar 0:550e01736339 58 }
aminomar 0:550e01736339 59
aminomar 0:550e01736339 60 void Motorslam::setPwmRight(float fPeriod, float fPulsewidth)
aminomar 0:550e01736339 61 {
aminomar 0:550e01736339 62 pwmRight.period(fPeriod);
aminomar 0:550e01736339 63 pwmRight = fPulsewidth;
aminomar 0:550e01736339 64 }
aminomar 0:550e01736339 65
aminomar 0:550e01736339 66 void Motorslam::setPwmRightperiod(float fPeriod)
aminomar 0:550e01736339 67 {
aminomar 0:550e01736339 68 pwmRight.period(fPeriod);
aminomar 0:550e01736339 69 }
aminomar 0:550e01736339 70
aminomar 0:550e01736339 71 void Motorslam::setPwmRightpulsewidth(float fPulsewidth)
aminomar 0:550e01736339 72 {
aminomar 0:550e01736339 73 pwmRight = fPulsewidth;
aminomar 0:550e01736339 74 }
aminomar 0:550e01736339 75
aminomar 0:550e01736339 76 void Motorslam::standby(void)
aminomar 0:550e01736339 77 {
aminomar 0:550e01736339 78 nStby = SIG_LOW;
aminomar 0:550e01736339 79 }
aminomar 0:550e01736339 80
aminomar 0:550e01736339 81 void Motorslam::motorLeft_stop(void)
aminomar 0:550e01736339 82 {
aminomar 0:550e01736339 83 leftIn1 = SIG_LOW;
aminomar 0:550e01736339 84 leftIn2 = SIG_LOW;
aminomar 0:550e01736339 85 }
aminomar 0:550e01736339 86
aminomar 0:550e01736339 87 void Motorslam::motorLeft_cw(void)
aminomar 0:550e01736339 88 {
aminomar 0:550e01736339 89 leftIn1 = SIG_HIGH;
aminomar 0:550e01736339 90 leftIn2 = SIG_LOW;
aminomar 0:550e01736339 91 nStby = SIG_HIGH;
aminomar 0:550e01736339 92 }
aminomar 0:550e01736339 93 void Motorslam::motorLeft_ccw(void)
aminomar 0:550e01736339 94 {
aminomar 0:550e01736339 95 leftIn1 = SIG_LOW;
aminomar 0:550e01736339 96 leftIn2 = SIG_HIGH;
aminomar 0:550e01736339 97 nStby = SIG_HIGH;
aminomar 0:550e01736339 98 }
aminomar 0:550e01736339 99
aminomar 0:550e01736339 100 void Motorslam::motorRight_stop(void)
aminomar 0:550e01736339 101 {
aminomar 0:550e01736339 102 rightIn1 = SIG_LOW;
aminomar 0:550e01736339 103 rightIn2 = SIG_LOW;
aminomar 0:550e01736339 104 }
aminomar 0:550e01736339 105 void Motorslam::motorRight_cw(void)
aminomar 0:550e01736339 106 {
aminomar 0:550e01736339 107 rightIn1 = SIG_HIGH;
aminomar 0:550e01736339 108 rightIn2 = SIG_LOW;
aminomar 0:550e01736339 109 nStby = SIG_HIGH;
aminomar 0:550e01736339 110 }
aminomar 0:550e01736339 111 void Motorslam::motorRight_ccw(void)
aminomar 0:550e01736339 112 {
aminomar 0:550e01736339 113 rightIn1 = SIG_LOW;
aminomar 0:550e01736339 114 rightIn2 = SIG_HIGH;
aminomar 0:550e01736339 115 nStby = SIG_HIGH;
aminomar 0:550e01736339 116 }
aminomar 0:550e01736339 117
aminomar 0:550e01736339 118 void Motorslam::moveStop(void)
aminomar 0:550e01736339 119 {
aminomar 0:550e01736339 120 Motorslam::standby();
aminomar 0:550e01736339 121 }
aminomar 0:550e01736339 122 void Motorslam::moveForward(void)
aminomar 0:550e01736339 123 {
aminomar 0:550e01736339 124 Motorslam::motorLeft_cw();
aminomar 0:550e01736339 125 Motorslam::motorRight_cw();
aminomar 0:550e01736339 126 }
aminomar 0:550e01736339 127 void Motorslam::moveBackward(void)
aminomar 0:550e01736339 128 {
aminomar 0:550e01736339 129 Motorslam::motorLeft_ccw();
aminomar 0:550e01736339 130 Motorslam::motorRight_ccw();
aminomar 0:550e01736339 131 }
aminomar 0:550e01736339 132 void Motorslam::moveLeft(void)
aminomar 0:550e01736339 133 {
aminomar 0:550e01736339 134 Motorslam::motorLeft_ccw();
aminomar 0:550e01736339 135 Motorslam::motorRight_cw();
aminomar 0:550e01736339 136 wait(0.5);//trial; (0.5) for low friction(wooden floor); (0.7) for high friction
aminomar 0:550e01736339 137 Motorslam::moveStop();//trial
aminomar 0:550e01736339 138 }
aminomar 0:550e01736339 139 void Motorslam::moveRight(void)
aminomar 0:550e01736339 140 {
aminomar 0:550e01736339 141 Motorslam::motorLeft_cw();
aminomar 0:550e01736339 142 Motorslam::motorRight_ccw();
aminomar 0:550e01736339 143 wait(0.5);//trial; (0.5) for low friction(wooden floor); (0.7) for high friction
aminomar 0:550e01736339 144 Motorslam::moveStop();//trial
aminomar 0:550e01736339 145 }
aminomar 0:550e01736339 146