Template
Chargement...
Recherche...
Aucune correspondance
MotorController.h
1/****************************************************************************************
2Nom du fichier : MotorControllerler.h
3Auteur : Mathieu Durand
4Date de création : 11 juillet 2024
5
6****************************************************************************************/
7
8#ifndef MOTOR_CONTROLLER_H
9#define MOTOR_CONTROLLER_H
10
11#include "ArduinoX/ArduinoX.h"
12#include "PidLayer.h"
13
14#define DEFAULT_GEAR_BOX_RATIO 1
15#define DEFAULT_ENCODER_TICK_PER_TURN 1
16#define DEFAULT_CONVERTION_RATIO 1
17#define DEFAULT_LAYER MOTOR
18
24{
25 public:
36 MotorController(ArduinoX* arduinoX, PidLayer layer, int motorID, int encoderID, double gearBoxRatio, double encoderTickPerTurn, double convertionRatio);
37
47 MotorController(ArduinoX* arduinoX, PidLayer layer, int motorID, int encoderID, double gearBoxRatio, double encoderTickPerTurn);
48
57 MotorController(ArduinoX* arduinoX, PidLayer layer, int motorID, int encoderID, double encoderTickPerTurn);
58
66 MotorController(ArduinoX* arduinoX, PidLayer layer, int motorID, int encoderID);
67
77 MotorController(ArduinoX* arduinoX, int motorID, int encoderID, double gearBoxRatio, double encoderTickPerTurn, double convertionRatio);
78
87 MotorController(ArduinoX* arduinoX, int motorID, int encoderID, double gearBoxRatio, double encoderTickPerTurn);
88
96 MotorController(ArduinoX* arduinoX, int motorID, int encoderID, double encoderTickPerTurn);
97
104 MotorController(ArduinoX* arduinoX, int motorID, int encoderID);
105
110 void setMotorID(int motorID);
111
116 int getMotorID();
117
122 void setEncoderID(int encoderID);
123
128 int getEncoderID();
129
134 void setLayer(PidLayer layer);
135
140 PidLayer getLayer();
141
146 void setGearBoxRatio(double gearBoxRatio);
147
152 double getGearBoxRatio();
153
158 void setEncoderTickPerTurn(double encoderTickPerTurn);
159
164 double getEncoderTickPerTurn();
165
170 void setConversionRatio(double convertionRatio);
171
176 double getConversionRatio();
177
185 double measurementFunction();
186
195 void commandFunction(double command);
196
202 static double wheelRatio(double diameter);
203
208 static double degreesRatio();
209
214 static double radiansRatio();
215
220 static double turnRatio();
221
222 private:
230 double getFirstConversionStage();
231
239 double getLastConversionStage();
240
241 private:
242 double gearBoxRatio;
243 double encoderTickPerTurn;
244 double convertionRatio;
245 int motorID;
246 int encoderID;
247 PidLayer layer;
248 ArduinoX* arduinoX;
249};
250
251#endif // MOTOR_CONTROLLER_H
Class for controlling a motor using an Arduino and a PID controller.
Definition: MotorController.h:24
static double wheelRatio(double diameter)
Calculate the wheel ratio based on diameter.
Definition: MotorController.cpp:81
void setConversionRatio(double convertionRatio)
Set the conversion ratio.
Definition: MotorController.cpp:60
static double degreesRatio()
Calculate the degrees ratio.
Definition: MotorController.cpp:84
void setGearBoxRatio(double gearBoxRatio)
Set the gearbox ratio.
Definition: MotorController.cpp:46
PidLayer getLayer()
Get the PID layer.
Definition: MotorController.cpp:70
void setEncoderID(int encoderID)
Set the encoder ID.
Definition: MotorController.cpp:39
double getConversionRatio()
Get the conversion ratio.
Definition: MotorController.cpp:63
double measurementFunction()
Measurement function for the motor.
Definition: MotorController.cpp:74
int getMotorID()
Get the motor ID.
Definition: MotorController.cpp:35
static double radiansRatio()
Calculate the radians ratio.
Definition: MotorController.cpp:87
void setLayer(PidLayer layer)
Set the PID layer.
Definition: MotorController.cpp:67
void commandFunction(double command)
Command function for the motor.
Definition: MotorController.cpp:77
int getEncoderID()
Get the encoder ID.
Definition: MotorController.cpp:42
static double turnRatio()
Calculate the turn ratio.
Definition: MotorController.cpp:90
double getEncoderTickPerTurn()
Get the encoder ticks per turn.
Definition: MotorController.cpp:56
void setEncoderTickPerTurn(double encoderTickPerTurn)
Set the encoder ticks per turn.
Definition: MotorController.cpp:53
void setMotorID(int motorID)
Set the motor ID.
Definition: MotorController.cpp:32
double getGearBoxRatio()
Get the gearbox ratio.
Definition: MotorController.cpp:49