Drivers for the mini robot designed for Princeton's MAE 433 course.

Dependencies:   mbed-dsp mbed-rtos mbed

Dependents:   MAE433_Library_Tester RobotBalancerv2

HBridge.cpp

Committer:
Electrotiger
Date:
2016-06-25
Revision:
4:2d38ad348e0d
Parent:
0:9afc272fa65f
Child:
8:da95e4ccbe4c

File content as of revision 4:2d38ad348e0d:

/*
 * HBridge.cpp
 *
 *  Created on: Jun 4, 2016
 *      Author: Developer
 */

#include <HBridge.hpp>
#include <cmath>

HBridge::HBridge(PinName PWMPin, PinName DirectionPin)
: PWMOut(PWMPin), DirectionOut(DirectionPin) {
    // 10 ms period == 100 Hz works well.
    PWMOut.period_ms(1);
}

HBridge::~HBridge() {
    // TODO Auto-generated destructor stub
}

void HBridge::write(float percent) {
    // Write the percent value as a PWM out.
    PWMOut.write(std::abs(percent));
    // Write the direction as the sign of percent.
    DirectionOut.write(percent >= 0);
    // Set the output has changed flag to 1.
    outputHasChanged = true;
}

float HBridge::read() {
    static float prevValue;
    if (outputHasChanged) {
        outputHasChanged = false;
        prevValue = (DirectionOut.read()) ? PWMOut.read() : -PWMOut.read();
    }
    return prevValue;
}