This library is an attempt to encapsulate the Pololu motor board MC33926 Motor Driver Carrier.

/media/uploads/buckeyes1997/0j1889.200.jpg

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;
}