This library is an attempt to encapsulate the Pololu motor board MC33926 Motor Driver Carrier.
http://www.pololu.com/catalog/product/1213
Dual MC33926 Motor Driver Carrier
This dual brushed DC motor driver, based on Freescale’s MC33926 full H-bridge, has a wide operating range of 5 – 28 V and can deliver almost 3 A continuously (5 A peak) to each of its two motor channels. The MC33926 works with 3 – 5 V logic levels, supports ultrasonic (up to 20 kHz) PWM, and features current feedback, under-voltage protection, over-current protection, and over-temperature protection.
Diff: Motor.cpp
- Revision:
- 1:69e4a93b718d
- Parent:
- 0:b7c4b6de973e
--- a/Motor.cpp Mon Feb 11 19:49:50 2013 +0000 +++ b/Motor.cpp Mon Feb 11 20:53:20 2013 +0000 @@ -4,9 +4,9 @@ Motor::Motor(PinName pwm, PinName dir1, PinName dir2): _pwm(pwm), _dir1(dir1), _dir2(dir2) { - _direction=1; - _pwm.period(0.00005); - _pwm = 0; + _direction=1; //default fwd + _pwm.period(0.00005); //20Khz + _pwm = 0; //default pwm off _dir1 = 0; _dir2 = 0; @@ -21,17 +21,51 @@ _dir1=0; _dir2=1; } + if(speed > 1) { + speed = 1; + } + if(speed < -1) { + speed = -1; + } + _pwm = abs(speed); return speed; } float Motor::speed(float speed) { + if(speed > 1) { + speed = 1; + } + if(speed < -1) { + speed = -1; + } + if(speed < 0) { + _dir1=1; + _dir2=0; + } else { + _dir1=0; + _dir2=1; + } _pwm = abs(speed); return speed; } -Motor& Motor::operator= (float speed) { +Motor& Motor::operator= (float speed) +{ + if(speed > 1) { + speed = 1; + } + if(speed < -1) { + speed = -1; + } + if(speed < 0) { + _dir1=1; + _dir2=0; + } else { + _dir1=0; + _dir2=1; + } _pwm = abs(speed); - return *this; + return *this; }