You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
1.7 KiB
C++

#include "AccurateMotor.h"
void AccurateMotorClass::Init()
{
car_running = false;
}
void AccurateMotorClass::SetCarRunning()
{
AccurateMotor.car_running = true;
}
void AccurateMotorClass::SetCarNotRunning()
{
AccurateMotor.car_running = false;
}
void AccurateMotorClass::TurnLeft(uint8_t degree)
{
if (car_running)
return;
2 years ago
DCMotor.TurnLeft(car_turn_speed, car_turn_speed);
SetCarRunning();
MsTimer2::set(degree * turn_multplyer, []()
{
{
DCMotor.Stop();
SetCarNotRunning();
MsTimer2::stop();
}
});
MsTimer2::start();
}
void AccurateMotorClass::ForceStop()
{
DCMotor.Stop();
SetCarNotRunning();
MsTimer2::stop();
}
void AccurateMotorClass::TurnRight(uint8_t degree)
{
if (car_running)
return;
2 years ago
DCMotor.TurnRight(car_turn_speed, car_turn_speed);
SetCarRunning();
MsTimer2::set(degree * turn_multplyer, []()
{
{
DCMotor.Stop();
SetCarNotRunning();
MsTimer2::stop();
}
});
MsTimer2::start();
}
void AccurateMotorClass::RunForward(uint8_t distence)
{
if (car_running)
return;
DCMotor.Go(car_speed);
SetCarRunning();
MsTimer2::set(distence * run_multplyer, []()
{
{
DCMotor.Stop();
SetCarNotRunning();
MsTimer2::stop();
}
});
MsTimer2::start();
}
bool AccurateMotorClass::IsCarRunning()
{
return car_running;
}
void AccurateMotorClass::DelayUntilCarStop()
{
while (car_running)
delay(10);
2 years ago
delay(100); //<2F><><EFBFBD><EFBFBD><E5A3AC>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>λ<EFBFBD><CEBB>ƫ<EFBFBD><C6AB>
}
void AccurateMotorClass::RunBackward(uint8_t distence)
{
if (car_running)
return;
DCMotor.Back(car_speed);
SetCarRunning();
MsTimer2::set(distence * run_multplyer, []()
{
{
DCMotor.Stop();
SetCarNotRunning();
MsTimer2::stop();
}
});
MsTimer2::start();
}
AccurateMotorClass AccurateMotor;