Add pingpong mode with speed, time, and randomness settings
- Add pingpong oscillation mode that alternates motor direction - Settings: base speed (10-100%), time before return (0.5-10s) - Randomness controls for both speed (0-50%) and time (0-50%) - Web UI with sliders and start/stop buttons - API endpoints: /pingpong/start and /pingpong/stop - Real-time status polling shows pingpong active state
This commit is contained in:
@@ -21,6 +21,15 @@ public:
|
||||
|
||||
// Callback for stall events
|
||||
void setStallCallback(void (*callback)(float current));
|
||||
|
||||
// Pingpong mode
|
||||
void startPingpong(int speed, int timeMs, int speedRandomPercent, int timeRandomPercent);
|
||||
void stopPingpong();
|
||||
bool isPingpongActive();
|
||||
int getPingpongSpeed();
|
||||
int getPingpongTime();
|
||||
int getPingpongSpeedRandom();
|
||||
int getPingpongTimeRandom();
|
||||
|
||||
private:
|
||||
int _speed = 0;
|
||||
@@ -31,9 +40,22 @@ private:
|
||||
unsigned long _stallStartTime = 0;
|
||||
void (*_stallCallback)(float current) = nullptr;
|
||||
|
||||
// Pingpong state
|
||||
bool _pingpongActive = false;
|
||||
int _pingpongBaseSpeed = 50;
|
||||
int _pingpongBaseTime = 2000;
|
||||
int _pingpongSpeedRandomPercent = 0;
|
||||
int _pingpongTimeRandomPercent = 0;
|
||||
int _pingpongCurrentSpeed = 50;
|
||||
int _pingpongCurrentTime = 2000;
|
||||
unsigned long _pingpongLastSwitch = 0;
|
||||
int _pingpongDirection = 1;
|
||||
|
||||
void applyMotorState();
|
||||
float readCurrentSense(int pin);
|
||||
void checkStall();
|
||||
void updatePingpong();
|
||||
int applyRandomness(int baseValue, int randomPercent);
|
||||
};
|
||||
|
||||
extern MotorController motor;
|
||||
|
||||
Reference in New Issue
Block a user