improved moveControl

This commit is contained in:
2021-04-01 20:59:51 +02:00
parent d9e64fbc4a
commit a33b4a2e4c
7 changed files with 136 additions and 69 deletions
+11 -57
View File
@@ -10,7 +10,6 @@
#include <DabbleESP32.h>
void gamepadInput();
int8_t modSpeed(int8_t dir, int8_t speed);
MotorControl left_motor;
MotorControl right_motor;
@@ -34,88 +33,43 @@ void setup() {
}
void loop() {
if (millis() - last_millis > 700) {
if (millis() - last_millis > 400) {
gamepadInput();
// left_motor.toString();
// Serial.printf("speed: %f, ", speedometer_right.getSpeed());
// right_motor.toString();
// Serial.printf("Speed L: %f, Speed R: %f \n", speedometer_left.getSpeed(), speedometer_right.getSpeed());
last_millis = millis();
}
left_motor.runMotorControl();
// left_motor.runMotorControl();
right_motor.runMotorControl();
speedometer_left.runSpeedometer();
// speedometer_left.runSpeedometer();
speedometer_right.runSpeedometer();
moveController.runMoveControl();
// moveController.runMoveControl();
}
void gamepadInput() {
Dabble.processInput(); //this function is used to refresh data obtained from smartphone.Hence calling this function is mandatory in order to get data properly from your mobile.
//Serial.print("KeyPressed: ");
static int8_t speed_left = 0;
if (GamePad.isUpPressed()) {
speed_left = modSpeed(1, speed_left);
moveController.setSpeed(1.3);
} else if (GamePad.isDownPressed()) {
speed_left = modSpeed(-1, speed_left);
moveController.setSpeed(0);
} else {
speed_left = modSpeed(0, speed_left);
}
static int8_t speed_right = 0;
if (GamePad.isTrianglePressed()) {
speed_right = modSpeed(1, speed_right);
right_motor.setTargetSpeed(20);
} else if (GamePad.isCrossPressed()) {
speed_right = modSpeed(-1, speed_right);
} else {
speed_right = modSpeed(0, speed_right);
right_motor.setTargetSpeed(30);
} else if (GamePad.isCirclePressed()){
right_motor.setTargetSpeed(0);
}
left_motor.setTargetSpeed(speed_left);
right_motor.setTargetSpeed(speed_right);
// int a = GamePad.getAngle();
// int b = GamePad.getRadius();
// Serial.printf("Winkel: %d, Radius: %d \n", a, b);
}
int8_t modSpeed(int8_t dir, int8_t speed) {
int8_t new_speed = 0;
if (dir == 1) {
if (speed > 0) {
new_speed = speed + 5;
} else if (speed == 0) {
new_speed = 5;
} else {
new_speed = speed + 5;
}
} else if (dir == 0) {
if (speed > 0) {
new_speed = speed - 5;
} else if (speed == 0) {
new_speed = 0;
} else {
new_speed = speed + 5;
}
} else if (dir == -1) {
if (speed > 0) {
new_speed = speed - 5;
} else if (speed == 0) {
new_speed = -5;
} else {
new_speed = speed - 5;
}
}
if (new_speed < -100) {
new_speed = -100;
}
if (new_speed > 100) {
new_speed = 100;
}
return new_speed;
}