all but thumb

This commit is contained in:
2024-07-05 21:31:11 +02:00
parent e167ef6f5b
commit fb89d957bd
4 changed files with 66 additions and 24 deletions

View File

@@ -4,9 +4,11 @@ XboxSeriesXControllerESP32_asukiaaa::Core xboxController; //"40:8e:2c:41:e4:eb")
uint32_t lastcontrollernotify = 0;
uint16_t joymax = 0;
uint16_t trgmax = 0;
#define deadband 10000
#define trgdeadband 200
direction getdirection(int setpoint)
direction getdirectionJoy(int setpoint)
{
if(setpoint > (joymax/2 +deadband))
{
@@ -16,11 +18,35 @@ direction getdirection(int setpoint)
{
return direction::left;
}
else
//else
return direction::stop;
}
direction getdirecion2Button(uint8_t button0, uint8_t button1)
{
if(button0 & !button1)
{
return direction::stop;
return direction::left;
}
if(!button0 & button1)
{
return direction::right;
}
//else
return direction::stop;
}
direction getTrackDirection(int trigger, uint8_t shoulder)
{
if(trigger > (trgmax/2 + trgdeadband) & !shoulder)
{
return direction::right;
}
if((trigger == 0) & shoulder)
{
return direction::left;
}
return direction::stop;
}
void setup_controller()
@@ -47,23 +73,27 @@ void loop_controller()
// log_i("message: %s", Serial.print(xboxController.xboxNotif.toString()));
unsigned long receivedAt = xboxController.getReceiveNotificationAt();
joymax = XboxControllerNotificationParser::maxJoy;
trgmax = XboxControllerNotificationParser::maxTrig;
if (millis() - lastcontrollernotify > CONTROLLERNOTIFY)
{
log_i("joyLHori rate: %u", xboxController.xboxNotif.joyLHori);
log_i("joyLVert rate: %u", xboxController.xboxNotif.joyLVert);
log_i("joyRHori rate: %u", xboxController.xboxNotif.joyRHori);
log_i("joyRVert rate: %u", xboxController.xboxNotif.joyRVert);
// log_i("joyLHori rate: %u", xboxController.xboxNotif.btnLS);
// log_i("joyLVert rate: %u", xboxController.xboxNotif.btnLB);
// log_i("joyRHori rate: %u", xboxController.xboxNotif.trigLT);
// log_i("joyRVert rate: %u", xboxController.xboxNotif.trigRT);
log_i("battery %d %", xboxController.battery);
log_i("joymax:%d",joymax );
//log_v("joymax:%d",joymax );
lastcontrollernotify = millis();
}
controlMotor("Pivot", getdirection(xboxController.xboxNotif.joyLHori));
controlMotor("Dipper", getdirection(xboxController.xboxNotif.joyLVert));
controlMotor("Pivot", getdirectionJoy(xboxController.xboxNotif.joyLHori));
controlMotor("Dipper", getdirectionJoy(xboxController.xboxNotif.joyLVert));
controlMotor("Bucket", getdirectionJoy(xboxController.xboxNotif.joyRHori));
controlMotor("Boom", getdirectionJoy(xboxController.xboxNotif.joyRVert));
controlMotor("Push", getdirecion2Button(xboxController.xboxNotif.btnX, xboxController.xboxNotif.btnY));
controlMotor("Thumb", getdirecion2Button(xboxController.xboxNotif.btnA, xboxController.xboxNotif.btnB));
controlMotor("Bucket", getdirection(xboxController.xboxNotif.joyRHori));
controlMotor("Boom", getdirection(xboxController.xboxNotif.joyRVert));
controlMotor("TrackLeft", getTrackDirection(xboxController.xboxNotif.trigLT, xboxController.xboxNotif.btnLB));
controlMotor("TrackRight", getTrackDirection(xboxController.xboxNotif.trigRT, xboxController.xboxNotif.btnRB));
//controlMotor("TrackLeft", getdirection(xboxController.xboxNotif.trigLT)
}
}

View File

@@ -2,7 +2,7 @@
#include "motors.h"
#include <XboxSeriesXControllerESP32_asukiaaa.hpp>
#define CONTROLLERNOTIFY 1000
#define CONTROLLERNOTIFY 30000
void setup_controller();

View File

@@ -11,14 +11,14 @@ Servo auxServo;
motorinit initlist[NUMMOTORS]
{
{pivot0, pivot1, 0, "Pivot"},
{mainBoom0, mainBoom1, 1, "Boom"},
{secondBoom0, secondBoom1, 2, "Dipper"},
{tiltAttach0, tiltAttach1, 3, "Bucket"},
{thumb0, thumb1, 4, "Thumb"},
{auxAttach0, auxAttach1, 5, "Aux"},
{leftMotor0, leftMotor1, 6, "TrackLeft"},
{rightMotor0, rightMotor1, 7, "TrackRight"}
{pivot0, pivot1, 0, "Pivot", true},
{mainBoom0, mainBoom1, 1, "Boom", false},
{secondBoom0, secondBoom1, 2, "Dipper", true},
{tiltAttach0, tiltAttach1, 3, "Bucket", true},
{thumb0, thumb1, 4, "Thumb", false},
{auxAttach0, auxAttach1, 5, "Push", false},
{leftMotor0, leftMotor1, 6, "TrackLeft", true},
{rightMotor0, rightMotor1, 7, "TrackRight", true}
};
std::vector<motor> motors;
@@ -67,8 +67,17 @@ void motor::begin()
void motor::setIO(uint8_t in0, uint8_t in1)
{
if(!m_invert)
{
mcp.digitalWrite(m_pin0, in0);
mcp.digitalWrite(m_pin1, in1);
}
else
{
mcp.digitalWrite(m_pin0, in1);
mcp.digitalWrite(m_pin1, in0);
}
}
uint32_t lastmotorlog = 0;

View File

@@ -25,6 +25,7 @@ struct motorinit
uint8_t in1;
uint8_t id;
String name;
bool invert;
};
enum direction
@@ -47,13 +48,15 @@ class motor
String m_name;
uint32_t m_lastlog;
direction current;
bool m_invert;
void setIO(uint8_t in0, uint8_t in1);
public:
motor(motorinit initstruct): m_pin0(initstruct.in0),
m_pin1(initstruct.in1),
m_id(initstruct.id),
m_name(initstruct.name) {};
m_name(initstruct.name),
m_invert(initstruct.invert) {};
void begin();
void run(direction dir);