SPQR-Team1-2020/lib/RC_ESC/ESC.cpp

87 lines
1.5 KiB
C++

/*
* Electronic Speed Controller (ESC) - Library
*
*
*/
#include "ESC.h"
// < Constructor >
/*
* Sets the proper pin to output.
*/
ESC::ESC(byte ESC_pin, int outputMin, int outputMax, int armVal)
{
oPin = ESC_pin;
oMin = outputMin;
oMax = outputMax;
oArm = armVal;
}
// < Destructor >
ESC::~ESC()
{
// Nothing to destruct
}
/*
* Calibrate the maximum and minimum PWM signal the ESC is expecting
* depends on the outputMin, outputMax values from the constructor
*/
void ESC::calib(void)
{
myESC.attach(oPin); // attaches the ESC on pin oPin to the ESC object
myESC.writeMicroseconds(oMax);
delay(calibrationDelay);
myESC.writeMicroseconds(oMin);
delay(calibrationDelay);
arm();
}
/*
* Sent a signal to Arm the ESC
* depends on the Arming value from the constructor
*/
void ESC::arm(void)
{
myESC.attach(oPin); // attaches the ESC on pin oPin to the ESC object
myESC.writeMicroseconds (oArm);
}
/*
* Sent a signal to stop the ESC
* depends on the ESC stop pulse value
*/
void ESC::stop(void)
{
myESC.writeMicroseconds (stopPulse);
}
/*
* Sent a signal to set the ESC speed
* depends on the calibration minimum and maximum values
*/
void ESC::speed(int outputESC)
{
oESC = constrain(outputESC, oMin, oMax);
myESC.writeMicroseconds(oESC);
}
/*
* Set the current calibration delay in miliseconds
*
*/
void ESC::setCalibrationDelay(uint32_t calibration_delay)
{
calibrationDelay = calibration_delay;
}
/*
* Set the current Stop pulse in microseconds
*
*/
void ESC::setStopPulse(uint32_t stop_pulse)
{
stopPulse = stop_pulse;
}