Simple Interface for Toshiba's TB6612FNG H-Bridge Motor Driver

TB6612FNG.h

Committer:
humlet
Date:
2013-03-06
Revision:
2:73d5d7514e4c
Parent:
1:3dd9137a5cec
Child:
3:1ae4f0bb91c6

File content as of revision 2:73d5d7514e4c:

#ifndef TB6612FNG_H
#define TB6612FNG_H

#include "mbed.h"

/// Simple Interface for Toshiba's TB6612FNG H-Bridge Motor Driver
class TB6612FNG
{
    PwmOut m_pwm;
    DigitalOut m_ctrl1;
    DigitalOut m_ctrl2;
    int m_pw;
    bool m_on;
    bool m_brakeOnZeroDC;
    int m_period;

public:
    /** Create TB6612FNG object connected to the specified mbed pins
    * @param pwm PwmOut pin name
    * @param ctrl1/ctrl2 DigitalOut control pin name
    * @param pwmPeriod sets the PWM period (µs)
    * @param brakeOnZeroDC true: The motor brakes on zero pulse width setting. 
    *                      false: The motor output is set to high impedance
    */
    TB6612FNG(PinName pwm, PinName ctrl1, PinName ctrl2, int pwmPeriod=1000, bool brakeOnZeroDC=true);
    /** Sets the PWM pulse width
     * @param pw is the PWM pulse width setting in µs
     */
    void setPulseWidth(int pw);
    /// activates the motor at duty cycle adjusted with setPulseWidth
    void on();
    /// deactivates the motor (sets the motor output to high impedance, no short brake)
    void off();
    /// brakes the motor by shorting it 
    void brake();
    /** pulse width assignment
     * @param pw is the PWM pulse width setting in µs
     */
    void operator=(int pw) {
        setPulseWidth(pw);
    }
};

#endif