CRINSA-team2025 V1
Documentation du Club Robot INSA Rennes 2025
Chargement...
Recherche...
Aucune correspondance
Dynamixel.h
1#ifndef __DYNAMIXEL_H
2#define __DYNAMIXEL_H
3
4#include <inttypes.h>
5#include <Arduino.h>
6
7
9#define AX_MODEL_NUMBER_L 0
10#define AX_MODEL_NUMBER_H 1
11#define AX_VERSION 2
12#define AX_ID 3
13#define AX_BAUD_RATE 4
14#define AX_RETURN_DELAY_TIME 5
15#define AX_CW_ANGLE_LIMIT_L 6
16#define AX_CW_ANGLE_LIMIT_H 7
17#define AX_CCW_ANGLE_LIMIT_L 8
18#define AX_CCW_ANGLE_LIMIT_H 9
19#define AX_SYSTEM_DATA2 10
20#define AX_LIMIT_TEMPERATURE 11
21#define AX_DOWN_LIMIT_VOLTAGE 12
22#define AX_UP_LIMIT_VOLTAGE 13
23#define AX_MAX_TORQUE_L 14
24#define AX_MAX_TORQUE_H 15
25#define AX_RETURN_LEVEL 16
26#define AX_ALARM_LED 17
27#define AX_ALARM_SHUTDOWN 18
28#define AX_OPERATING_MODE 19
29#define AX_DOWN_CALIBRATION_L 20
30#define AX_DOWN_CALIBRATION_H 21
31#define AX_UP_CALIBRATION_L 22
32#define AX_UP_CALIBRATION_H 23
33
35#define AX_TORQUE_ENABLE 24
36#define AX_LED 25
37#define AX_CW_COMPLIANCE_MARGIN 26
38#define AX_CCW_COMPLIANCE_MARGIN 27
39#define AX_CW_COMPLIANCE_SLOPE 28
40#define AX_CCW_COMPLIANCE_SLOPE 29
41#define AX_GOAL_POSITION_L 30
42#define AX_GOAL_POSITION_H 31
43#define AX_GOAL_SPEED_L 32
44#define AX_GOAL_SPEED_H 33
45#define AX_TORQUE_LIMIT_L 34
46#define AX_TORQUE_LIMIT_H 35
47#define AX_PRESENT_POSITION_L 36
48#define AX_PRESENT_POSITION_H 37
49#define AX_PRESENT_SPEED_L 38
50#define AX_PRESENT_SPEED_H 39
51#define AX_PRESENT_LOAD_L 40
52#define AX_PRESENT_LOAD_H 41
53#define AX_PRESENT_VOLTAGE 42
54#define AX_PRESENT_TEMPERATURE 43
55#define AX_REGISTERED_INSTRUCTION 44
56#define AX_PAUSE_TIME 45
57#define AX_MOVING 46
58#define AX_LOCK 47
59#define AX_PUNCH_L 48
60#define AX_PUNCH_H 49
61
63#define AX_RETURN_NONE 0
64#define AX_RETURN_READ 1
65#define AX_RETURN_ALL 2
66
68#define AX_PING 1
69#define AX_READ_DATA 2
70#define AX_WRITE_DATA 3
71#define AX_REG_WRITE 4
72#define AX_ACTION 5
73#define AX_RESET 6
74#define AX_SYNC_WRITE 131
75
77#define OFF 0
78#define ON 1
79#define LEFT 0
80#define RIGTH 1
81#define AX_BYTE_READ 1
82#define AX_BYTE_READ_POS 2
83#define AX_RESET_LENGTH 2
84#define AX_ACTION_LENGTH 2
85#define AX_ID_LENGTH 4
86#define AX_LR_LENGTH 4
87#define AX_SRL_LENGTH 4
88#define AX_RDT_LENGTH 4
89#define AX_LEDALARM_LENGTH 4
90#define AX_SALARM_LENGTH 4
91#define AX_TL_LENGTH 4
92#define AX_VL_LENGTH 6
93#define AX_CM_LENGTH 6
94#define AX_CS_LENGTH 6
95#define AX_CCW_CW_LENGTH 8
96#define AX_BD_LENGTH 4
97#define AX_TEM_LENGTH 4
98#define AX_MOVING_LENGTH 4
99#define AX_RWS_LENGTH 4
100#define AX_VOLT_LENGTH 4
101#define AX_LED_LENGTH 4
102#define AX_TORQUE_LENGTH 4
103#define AX_POS_LENGTH 4
104#define AX_GOAL_LENGTH 5
105#define AX_MT_LENGTH 5
106#define AX_PUNCH_LENGTH 5
107#define AX_SPEED_LENGTH 5
108#define AX_GOAL_SP_LENGTH 7
109#define AX_ACTION_CHECKSUM 250
110#define BROADCAST_ID 254
111#define AX_START 255
112#define AX_CCW_AL_L 255
113#define AX_CCW_AL_H 3
114#define TIME_OUT 10 // Este parametro depende de la velocidad de transmision
115#define TX_DELAY_TIME 400 // Este parametro depende de la velocidad de transmision - pero pueden ser cambiados para mayor velocidad.
116#define Tx_MODE 1
117#define Rx_MODE 0
118#define LOCK 1
119
121private:
122 unsigned char DTx; // Default Serial Port 0 -> Rx & 1 -> Tx
123 unsigned char Checksum;
124 unsigned char Time_Counter;
125 unsigned char Incoming_Byte;
126 unsigned char Position_High_Byte;
127 unsigned char Position_Low_Byte;
128 unsigned char Speed_High_Byte;
129 unsigned char Speed_Low_Byte;
130 unsigned char Load_High_Byte;
131 unsigned char Load_Low_Byte;
132
133 int Moving_Byte;
134 int RWS_Byte;
135 int Speed_Long_Byte;
136 int Load_Long_Byte;
137 int Position_Long_Byte;
138 int Temperature_Byte;
139 int Voltage_Byte;
140 int Error_Byte;
141
142 int read_error(void);
143
144public:
145
146 void begin(long baud, unsigned char RxTx);
147 void begin(long baud);
148 void end(void);
149
150 int reset(unsigned char ID);
151 int ping(unsigned char ID);
152
153 int setID(unsigned char ID, unsigned char newID);
154 int setBD(unsigned char ID, long baud);
155
156 int move(unsigned char ID, int Position);
157 int moveSpeed(unsigned char ID, int Position, int Speed);
158 int setEndless(unsigned char ID,bool Status);
159 int turn(unsigned char ID, bool SIDE, int Speed);
160 int moveRW(unsigned char ID, int Position);
161 int moveSpeedRW(unsigned char ID, int Position, int Speed);
162
163 void action(void);
164
165 int setTempLimit(unsigned char ID, unsigned char Temperature);
166 int setAngleLimit(unsigned char ID, int CWLimit, int CCWLimit);
167 int setVoltageLimit(unsigned char ID, unsigned char DVoltage, unsigned char UVoltage);
168 int setMaxTorque(unsigned char ID, int MaxTorque);
169 int setMaxTorqueRAM(unsigned char ID, int MaxTorque);
170 int setSRL(unsigned char ID, unsigned char SRL);
171 int setRDT(unsigned char ID, unsigned char RDT);
172 int setLEDAlarm(unsigned char ID, unsigned char LEDAlarm);
173 int setShutdownAlarm(unsigned char ID, unsigned char SALARM);
174 int setCMargin(unsigned char ID, unsigned char CWCMargin, unsigned char CCWCMargin);
175 int setCSlope(unsigned char ID, unsigned char CWCSlope, unsigned char CCWCSlope);
176 int setPunch(unsigned char ID, int Punch);
177
178 int moving(unsigned char ID);
179 int lockRegister(unsigned char ID);
180 int RWStatus(unsigned char ID);
181
182 int readTemperature(unsigned char ID);
183 int readVoltage(unsigned char ID);
184 int readPosition(unsigned char ID);
185 int readSpeed(unsigned char ID);
186 int readLoad(unsigned char ID);
187
188 int torqueStatus(unsigned char ID, bool Status);
189 int ledStatus(unsigned char ID, bool Status);
190};
191
192extern DynamixelClass Dynamixel;
193
194#endif /* __DYNAMIXEL_H */
Definition Dynamixel.h:120
Structure de position.
Definition Odometry.h:14