2019-11-11 22:26:34 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <Arduino.h>
|
|
|
|
#include "motor.h"
|
|
|
|
|
|
|
|
//PID Constants
|
2019-12-05 11:53:01 +01:00
|
|
|
|
2020-01-15 18:43:08 +01:00
|
|
|
#define KP 0.9
|
2019-12-05 11:53:01 +01:00
|
|
|
#define KI 0
|
2020-01-15 18:43:08 +01:00
|
|
|
#define KD 0
|
2019-11-11 22:26:34 +01:00
|
|
|
|
|
|
|
class DriveController{
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
DriveController(Motor* m1_, Motor* m2_, Motor* m3_, Motor* m4_);
|
2019-11-13 16:26:03 +01:00
|
|
|
|
2019-12-09 19:08:05 +01:00
|
|
|
void drive(int dir=0, int speed=0, int tilt=0);
|
|
|
|
void prepareDrive(int dir=0, int speed=0, int tilt=0);
|
2019-11-11 22:26:34 +01:00
|
|
|
void drivePrepared();
|
|
|
|
float updatePid();
|
2019-11-18 14:37:55 +01:00
|
|
|
float torad(float f);
|
2019-11-11 22:26:34 +01:00
|
|
|
|
2019-12-05 11:53:01 +01:00
|
|
|
int vxp, vyp, vxn, vyn;
|
|
|
|
bool canUnlock;
|
|
|
|
elapsedMillis unlockTime;
|
|
|
|
|
2019-11-11 22:26:34 +01:00
|
|
|
private:
|
|
|
|
Motor* m1;
|
|
|
|
Motor* m2;
|
|
|
|
Motor* m3;
|
|
|
|
Motor* m4;
|
|
|
|
int pDir, pSpeed, pTilt;
|
|
|
|
float speed1, speed2, speed3, speed4, errorePre, integral, pidfactor, errorP, errorD, errorI, delta;
|
|
|
|
int vx, vy;
|
|
|
|
|
|
|
|
float sins[360], cosins[360];
|
|
|
|
|
|
|
|
};
|