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.
Motor.cpp
- Committer:
- buckeyes1997
- Date:
- 2013-02-11
- Revision:
- 1:69e4a93b718d
- Parent:
- 0:b7c4b6de973e
File content as of revision 1:69e4a93b718d:
#include "Motor.h" #include "mbed.h" Motor::Motor(PinName pwm, PinName dir1, PinName dir2): _pwm(pwm), _dir1(dir1), _dir2(dir2) { _direction=1; //default fwd _pwm.period(0.00005); //20Khz _pwm = 0; //default pwm off _dir1 = 0; _dir2 = 0; } float Motor::speed(float speed, bool direction) { if(direction == true) { _dir1=1; _dir2=0; } else { _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) { 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; }