48 أسطر
931 B
C++
48 أسطر
931 B
C++
#include "CytronMotorDriver.h"
|
|
|
|
CytronMD::CytronMD(MODE mode, uint8_t pin1, uint8_t pin2)
|
|
{
|
|
_mode = mode;
|
|
_pin1 = pin1;
|
|
_pin2 = pin2;
|
|
|
|
pinMode(_pin1, OUTPUT);
|
|
pinMode(_pin2, OUTPUT);
|
|
|
|
digitalWrite(_pin1, LOW);
|
|
digitalWrite(_pin2, LOW);
|
|
}
|
|
|
|
void CytronMD::setSpeed(int16_t speed)
|
|
{
|
|
// Make sure the speed is within the limit.
|
|
if (speed > 255) {
|
|
speed = 255;
|
|
} else if (speed < -255) {
|
|
speed = -255;
|
|
}
|
|
|
|
// Set the speed and direction.
|
|
switch (_mode) {
|
|
case PWM_DIR:
|
|
if (speed >= 0) {
|
|
analogWrite(_pin1, speed);
|
|
digitalWrite(_pin2, LOW);
|
|
} else {
|
|
analogWrite(_pin1, -speed);
|
|
digitalWrite(_pin2, HIGH);
|
|
}
|
|
break;
|
|
|
|
case PWM_PWM:
|
|
if (speed >= 0) {
|
|
analogWrite(_pin1, speed);
|
|
analogWrite(_pin2, 0);
|
|
} else {
|
|
analogWrite(_pin1, 0);
|
|
analogWrite(_pin2, -speed);
|
|
}
|
|
break;
|
|
}
|
|
}
|