Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
SwerveModule.h
- Committer:
- andrewh33
- Date:
- 2022-04-23
- Revision:
- 0:197b43f2f054
- Child:
- 1:05a5529f9c0d
File content as of revision 0:197b43f2f054:
#ifndef SWERVEMODULE_H
#define SWERVEMODULE_H
#include "mbed.h"
#include "SteerMotor.h"
#include "DriveMotor.h"
class SwerveModule {
private:
SteerMotor* _steer;
DriveMotor* _drive;
public:
SwerveModule(SteerMotor* steer, DriveMotor* drive) : _steer(steer), _drive(drive) {}
void begin() {
_steer->zero();
_drive->kill();
}
// speed is number from 0-1, angle is in degrees from 0-360
void drive(float speed, float angle){
float curr_angle = _steer->get_angle();
if ((angle > curr_angle + 90.0f && angle < curr_angle + 270.0f) ||
(angle > curr_angle - 270.0f && angle < curr_angle - 90.0f)){
angle += (angle < 180.0f) ? 180.0f : -180.0f;
_drive->set_dir(0);
} else {
_drive->set_dir(1);
}
_steer->set_angle(angle);
_drive->set_speed(speed);
}
void kill(){
_steer->kill();
_drive->kill();
}
void update(uint32_t curr_time){
_steer->update(curr_time);
}
};
#endif