motor i senzor
Dependencies: TextLCD mbed PinDetect
MotorDrivers/Motor.cpp@4:03b68322905f, 2013-11-09 (annotated)
- Committer:
- mdraganic
- Date:
- Sat Nov 09 18:35:13 2013 +0000
- Revision:
- 4:03b68322905f
- Parent:
- 3:bebfc64cefe4
- Child:
- 6:902bec57d9ae
popravljena logika upravljanja motorima
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mdraganic | 1:3500bf8487d0 | 1 | #include "Motor.h" |
mdraganic | 1:3500bf8487d0 | 2 | |
mdraganic | 3:bebfc64cefe4 | 3 | Motor::Motor(PinName positivePin, PinName negativePin, PinName pwmPin): |
mdraganic | 3:bebfc64cefe4 | 4 | positiveOut(positivePin), negativeOut(negativePin), pwmOut(pwmPin) { |
mdraganic | 3:bebfc64cefe4 | 5 | |
mdraganic | 3:bebfc64cefe4 | 6 | pwmOut.period(motorPwmPeriod); |
mdraganic | 3:bebfc64cefe4 | 7 | pwmOut = motorPwmInitDutyCycle; |
mdraganic | 3:bebfc64cefe4 | 8 | |
mdraganic | 3:bebfc64cefe4 | 9 | positiveOut = 0; |
mdraganic | 3:bebfc64cefe4 | 10 | negativeOut = 0; |
mdraganic | 1:3500bf8487d0 | 11 | } |
mdraganic | 1:3500bf8487d0 | 12 | |
mdraganic | 4:03b68322905f | 13 | void Motor::start() { |
mdraganic | 1:3500bf8487d0 | 14 | |
mdraganic | 3:bebfc64cefe4 | 15 | for (float i = 1; i > 0; i -= motorPwmChangeSpeed) { |
mdraganic | 3:bebfc64cefe4 | 16 | pwmOut = i; |
mdraganic | 3:bebfc64cefe4 | 17 | wait(motorPwmWaitTime); |
mdraganic | 3:bebfc64cefe4 | 18 | } |
mdraganic | 3:bebfc64cefe4 | 19 | pwmOut = 0; |
mdraganic | 1:3500bf8487d0 | 20 | } |
mdraganic | 1:3500bf8487d0 | 21 | |
mdraganic | 1:3500bf8487d0 | 22 | void Motor::stop() { |
mdraganic | 1:3500bf8487d0 | 23 | |
mdraganic | 4:03b68322905f | 24 | if(direction == 0) |
mdraganic | 4:03b68322905f | 25 | return; |
mdraganic | 4:03b68322905f | 26 | |
mdraganic | 3:bebfc64cefe4 | 27 | for (float i = 0; i < 1; i += motorPwmChangeSpeed) { |
mdraganic | 3:bebfc64cefe4 | 28 | pwmOut = i; |
mdraganic | 3:bebfc64cefe4 | 29 | wait(motorPwmWaitTime); |
mdraganic | 3:bebfc64cefe4 | 30 | } |
mdraganic | 3:bebfc64cefe4 | 31 | pwmOut = 1; |
mdraganic | 3:bebfc64cefe4 | 32 | |
mdraganic | 1:3500bf8487d0 | 33 | positiveOut = 0; |
mdraganic | 1:3500bf8487d0 | 34 | negativeOut = 0; |
mdraganic | 1:3500bf8487d0 | 35 | direction = 0; |
mdraganic | 4:03b68322905f | 36 | } |
mdraganic | 4:03b68322905f | 37 | |
mdraganic | 4:03b68322905f | 38 | void Motor::movePositive() { |
mdraganic | 4:03b68322905f | 39 | |
mdraganic | 4:03b68322905f | 40 | if(direction == 1) |
mdraganic | 4:03b68322905f | 41 | return; |
mdraganic | 4:03b68322905f | 42 | |
mdraganic | 4:03b68322905f | 43 | if(direction == -1) |
mdraganic | 4:03b68322905f | 44 | stop(); |
mdraganic | 4:03b68322905f | 45 | |
mdraganic | 4:03b68322905f | 46 | positiveOut = 1; |
mdraganic | 4:03b68322905f | 47 | direction = 1; |
mdraganic | 4:03b68322905f | 48 | start(); |
mdraganic | 4:03b68322905f | 49 | } |
mdraganic | 4:03b68322905f | 50 | |
mdraganic | 4:03b68322905f | 51 | void Motor::moveNegative() { |
mdraganic | 4:03b68322905f | 52 | |
mdraganic | 4:03b68322905f | 53 | if(direction == -1) |
mdraganic | 4:03b68322905f | 54 | return; |
mdraganic | 4:03b68322905f | 55 | |
mdraganic | 4:03b68322905f | 56 | if(direction == 1) |
mdraganic | 4:03b68322905f | 57 | stop(); |
mdraganic | 4:03b68322905f | 58 | |
mdraganic | 4:03b68322905f | 59 | negativeOut = 1; |
mdraganic | 4:03b68322905f | 60 | direction = -1; |
mdraganic | 4:03b68322905f | 61 | start(); |
mdraganic | 1:3500bf8487d0 | 62 | } |
mdraganic | 3:bebfc64cefe4 | 63 | |
mdraganic | 3:bebfc64cefe4 | 64 | bool Motor::isMoving() { |
mdraganic | 3:bebfc64cefe4 | 65 | |
mdraganic | 4:03b68322905f | 66 | return direction == 0; |
mdraganic | 3:bebfc64cefe4 | 67 | } |