main
This commit is contained in:
113
src/DRV8870.cpp
Normal file
113
src/DRV8870.cpp
Normal file
@ -0,0 +1,113 @@
|
||||
#include "DRV8870.h"
|
||||
#include <Arduino.h>
|
||||
DRV8870::DRV8870(int motor_pin_1, int motor_pin_2)
|
||||
{
|
||||
this->_motor_count = 1;
|
||||
this->_motor_pin_1 = motor_pin_1;
|
||||
this->_motor_pin_2 = motor_pin_2;
|
||||
pinMode(this->_motor_pin_1, OUTPUT);
|
||||
pinMode(this->_motor_pin_2, OUTPUT);
|
||||
}
|
||||
DRV8870::DRV8870(int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4)
|
||||
{
|
||||
this->_motor_count = 2;
|
||||
this->_motor_pin_1 = motor_pin_1;
|
||||
this->_motor_pin_2 = motor_pin_2;
|
||||
this->_motor_pin_3 = motor_pin_3;
|
||||
this->_motor_pin_4 = motor_pin_4;
|
||||
pinMode(this->_motor_pin_1, OUTPUT);
|
||||
pinMode(this->_motor_pin_2, OUTPUT);
|
||||
pinMode(this->_motor_pin_3, OUTPUT);
|
||||
pinMode(this->_motor_pin_4, OUTPUT);
|
||||
}
|
||||
void DRV8870::setMaxSpeed(int max_speed)
|
||||
{
|
||||
this->max_speed = max_speed;
|
||||
}
|
||||
void DRV8870::setSpeed(int motor_speed, int direction)
|
||||
{
|
||||
switch (this->_motor_count)
|
||||
{
|
||||
case 1:
|
||||
switch (direction)
|
||||
{
|
||||
case HighLow:
|
||||
analogWrite(this->_motor_pin_1, motor_speed);
|
||||
analogWrite(this->_motor_pin_2, 0);
|
||||
break;
|
||||
case LowHigh:
|
||||
analogWrite(this->_motor_pin_1, 0);
|
||||
analogWrite(this->_motor_pin_2, motor_speed);
|
||||
break;
|
||||
case HighHigh:
|
||||
analogWrite(this->_motor_pin_1, 0);
|
||||
analogWrite(this->_motor_pin_2, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (direction)
|
||||
{
|
||||
case HighLow:
|
||||
analogWrite(this->_motor_pin_1, motor_speed);
|
||||
analogWrite(this->_motor_pin_2, 0);
|
||||
analogWrite(this->_motor_pin_3, motor_speed);
|
||||
analogWrite(this->_motor_pin_4, 0);
|
||||
break;
|
||||
case LowHigh:
|
||||
analogWrite(this->_motor_pin_1, 0);
|
||||
analogWrite(this->_motor_pin_2, motor_speed);
|
||||
analogWrite(this->_motor_pin_3, 0);
|
||||
analogWrite(this->_motor_pin_4, motor_speed);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
//brake 有误,不在代码中使用
|
||||
void DRV8870::brake(int mode) //LL休眠,HH刹车
|
||||
{
|
||||
if (mode == COAST)
|
||||
{
|
||||
switch (this->_motor_count)
|
||||
{
|
||||
case 1:
|
||||
digitalWrite(this->_motor_pin_1, LOW);
|
||||
digitalWrite(this->_motor_pin_2, LOW);
|
||||
break;
|
||||
case 2:
|
||||
digitalWrite(this->_motor_pin_1, LOW);
|
||||
digitalWrite(this->_motor_pin_2, LOW);
|
||||
digitalWrite(this->_motor_pin_3, LOW);
|
||||
digitalWrite(this->_motor_pin_4, LOW);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (mode == BRAKE)
|
||||
{
|
||||
switch (this->_motor_count)
|
||||
{
|
||||
case 1:
|
||||
digitalWrite(this->_motor_pin_1, HIGH);
|
||||
digitalWrite(this->_motor_pin_2, HIGH);
|
||||
break;
|
||||
case 2:
|
||||
digitalWrite(this->_motor_pin_1, HIGH);
|
||||
digitalWrite(this->_motor_pin_2, HIGH);
|
||||
digitalWrite(this->_motor_pin_3, HIGH);
|
||||
digitalWrite(this->_motor_pin_4, HIGH);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user