motor i senzor
Dependencies: TextLCD mbed PinDetect
MotorDrivers/Motor.cpp@12:8cb20afa1694, 2014-01-17 (annotated)
- Committer:
- cvitas
- Date:
- Fri Jan 17 14:40:31 2014 +0000
- Revision:
- 12:8cb20afa1694
- Parent:
- 10:0b8a98b1e6b1
danchi 1
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 | 10:0b8a98b1e6b1 | 10 | negativeOut = 0; |
mdraganic | 10:0b8a98b1e6b1 | 11 | direction = 0; |
mdraganic | 10:0b8a98b1e6b1 | 12 | pwmOut = 1; |
mdraganic | 1:3500bf8487d0 | 13 | } |
mdraganic | 1:3500bf8487d0 | 14 | |
mdraganic | 4:03b68322905f | 15 | void Motor::start() { |
mdraganic | 1:3500bf8487d0 | 16 | |
mdraganic | 3:bebfc64cefe4 | 17 | for (float i = 1; i > 0; i -= motorPwmChangeSpeed) { |
mdraganic | 3:bebfc64cefe4 | 18 | pwmOut = i; |
mdraganic | 3:bebfc64cefe4 | 19 | wait(motorPwmWaitTime); |
mdraganic | 3:bebfc64cefe4 | 20 | } |
mdraganic | 3:bebfc64cefe4 | 21 | pwmOut = 0; |
mdraganic | 1:3500bf8487d0 | 22 | } |
mdraganic | 1:3500bf8487d0 | 23 | |
mdraganic | 1:3500bf8487d0 | 24 | void Motor::stop() { |
mdraganic | 1:3500bf8487d0 | 25 | |
mdraganic | 4:03b68322905f | 26 | if(direction == 0) |
mdraganic | 4:03b68322905f | 27 | return; |
mdraganic | 4:03b68322905f | 28 | |
mdraganic | 3:bebfc64cefe4 | 29 | for (float i = 0; i < 1; i += motorPwmChangeSpeed) { |
mdraganic | 3:bebfc64cefe4 | 30 | pwmOut = i; |
mdraganic | 3:bebfc64cefe4 | 31 | wait(motorPwmWaitTime); |
mdraganic | 3:bebfc64cefe4 | 32 | } |
mdraganic | 3:bebfc64cefe4 | 33 | pwmOut = 1; |
mdraganic | 3:bebfc64cefe4 | 34 | |
mdraganic | 1:3500bf8487d0 | 35 | positiveOut = 0; |
mdraganic | 1:3500bf8487d0 | 36 | negativeOut = 0; |
mdraganic | 1:3500bf8487d0 | 37 | direction = 0; |
mdraganic | 6:902bec57d9ae | 38 | wait_ms(1000); |
mdraganic | 4:03b68322905f | 39 | } |
mdraganic | 4:03b68322905f | 40 | |
mdraganic | 4:03b68322905f | 41 | void Motor::movePositive() { |
mdraganic | 4:03b68322905f | 42 | |
mdraganic | 4:03b68322905f | 43 | if(direction == 1) |
mdraganic | 4:03b68322905f | 44 | return; |
mdraganic | 4:03b68322905f | 45 | |
mdraganic | 4:03b68322905f | 46 | if(direction == -1) |
mdraganic | 4:03b68322905f | 47 | stop(); |
mdraganic | 4:03b68322905f | 48 | |
mdraganic | 4:03b68322905f | 49 | positiveOut = 1; |
mdraganic | 4:03b68322905f | 50 | direction = 1; |
mdraganic | 4:03b68322905f | 51 | start(); |
mdraganic | 4:03b68322905f | 52 | } |
mdraganic | 4:03b68322905f | 53 | |
mdraganic | 4:03b68322905f | 54 | void Motor::moveNegative() { |
mdraganic | 4:03b68322905f | 55 | |
mdraganic | 4:03b68322905f | 56 | if(direction == -1) |
mdraganic | 4:03b68322905f | 57 | return; |
mdraganic | 4:03b68322905f | 58 | |
mdraganic | 4:03b68322905f | 59 | if(direction == 1) |
mdraganic | 4:03b68322905f | 60 | stop(); |
mdraganic | 4:03b68322905f | 61 | |
mdraganic | 4:03b68322905f | 62 | negativeOut = 1; |
mdraganic | 4:03b68322905f | 63 | direction = -1; |
mdraganic | 4:03b68322905f | 64 | start(); |
mdraganic | 1:3500bf8487d0 | 65 | } |
mdraganic | 3:bebfc64cefe4 | 66 | |
mdraganic | 3:bebfc64cefe4 | 67 | bool Motor::isMoving() { |
mdraganic | 3:bebfc64cefe4 | 68 | |
mdraganic | 4:03b68322905f | 69 | return direction == 0; |
mdraganic | 3:bebfc64cefe4 | 70 | } |