bug fix static in motor und speed

This commit is contained in:
2022-01-29 12:25:06 +01:00
parent 1265cfda5c
commit 9c4c82f8b3
18 changed files with 197 additions and 99 deletions
+44 -15
View File
@@ -38,10 +38,17 @@ MoveControl::~MoveControl() {
}
void MoveControl::loop() {
this->left_motor->loop();
this->right_motor->loop();
this->left_speedometer->loop();
this->right_speedometer->loop();
uint16_t left_motor_time = this->left_motor->loop();
uint16_t right_motor_time = this->right_motor->loop();
uint16_t left_speed_time = this->left_speedometer->loop();
uint16_t right_speed_time = this->right_speedometer->loop();
if (left_motor_time > 50
|| right_motor_time > 50
|| left_speed_time > 50
|| right_speed_time > 50) {
Serial.printf("left M: %d, right M %d, left S %d, right S %d in moveControl::loop\n", left_motor_time, right_motor_time, left_speed_time, right_speed_time);
}
static uint64_t last_millis = 0;
if (millis() - last_millis < delay)
@@ -63,6 +70,19 @@ void MoveControl::runMoveControl() {
void MoveControl::setDrivingStatus(DrivingStatus status) {
this->driving_status = status;
// switch (this->driving_status) {
// case DrivingStatus::stop :
// Serial.println("New drivingState = stop in MoveControl::setDrivingStatus");
// break;
// case DrivingStatus::drive :
// Serial.println("New drivingState = drive in MoveControl::setDrivingStatus");
// break;
// default:
// Serial.println("Wrong drivingState in MoveControl::regulateMotors");
// break;
// }
}
void MoveControl::setSpeed(double speed) {
@@ -114,19 +134,28 @@ void MoveControl::calcTargetWheelSpeed() {
void MoveControl::regulateMotors() {
switch (this->driving_status) {
case DrivingStatus::stop :
this->left_motor->setTargetPower(0);
this->right_motor->setTargetPower(0);
break;
case DrivingStatus::stop :
this->left_motor->setTargetPower(0);
this->right_motor->setTargetPower(0);
// Serial.println("in stop MoveControl::regulateMotors");
// if (abs(left_speedometer->getSpeed()) > 0.2) {
// Serial.printf("Left Motor Target: %d, Ist: %d\n", this->left_motor->getTargetPower(), this->left_motor->getPower());
// Serial.printf("Left Speedometer speed: %f\n", this->left_speedometer->getSpeed());
// }
// if (abs(right_speedometer->getSpeed()) > 0.2) {
// Serial.printf("Right Motor Target: %d, Ist: %d\n", this->right_motor->getTargetPower(), this->right_motor->getPower());
// Serial.printf("Right Speedometer speed: %f\n", this->right_speedometer->getSpeed());
// }
break;
case DrivingStatus::drive :
this->left_motor->setTargetPower( (int8_t) this->left_pid_out);
this->right_motor->setTargetPower( (int8_t) this->right_pid_out);
break;
case DrivingStatus::drive :
this->left_motor->setTargetPower( (int8_t) this->left_pid_out);
this->right_motor->setTargetPower( (int8_t) this->right_pid_out);
break;
default:
Serial.println("Wrong drivingState in MoveControl::regulateMotors");
break;
default:
Serial.println("Wrong drivingState in MoveControl::regulateMotors");
break;
}
}