PicoLowLevel
Loading...
Searching...
No Matches
DynamixelSerial.h
Go to the documentation of this file.
1#ifndef DynamixelSerial_h
2#define DynamixelSerial_h
3
4// EEPROM AREA
5#define AX_ID 3
6#define AX_BAUD_RATE 4
7#define AX_CW_ANGLE_LIMIT_L 6
8#define AX_CCW_ANGLE_LIMIT_L 8
9#define AX_LIMIT_TEMPERATURE 11
10#define AX_DOWN_LIMIT_VOLTAGE 12
11#define AX_MAX_TORQUE_L 14
12#define AX_RETURN_LEVEL 16
13#define AX_ALARM_LED 17
14#define AX_ALARM_SHUTDOWN 18
15
16// RAM AREA
17#define AX_TORQUE_ENABLE 24
18#define AX_LED 25
19#define AX_CW_COMPLIANCE_MARGIN 26
20#define AX_CCW_COMPLIANCE_MARGIN 27
21#define AX_CW_COMPLIANCE_SLOPE 28
22#define AX_CCW_COMPLIANCE_SLOPE 29
23#define AX_GOAL_POSITION_L 30
24#define AX_GOAL_SPEED_L 32
25#define AX_PRESENT_POSITION_L 36
26#define AX_PRESENT_SPEED_L 38
27#define AX_PRESENT_LOAD_L 40
28#define AX_PRESENT_VOLTAGE 42
29#define AX_PRESENT_TEMPERATURE 43
30#define AX_REGISTERED_INSTRUCTION 44
31#define AX_MOVING 46
32#define AX_LOCK 47
33#define AX_PUNCH_L 48
34
35// Instruction set
36#define AX_PING 1
37#define AX_READ_DATA 2
38#define AX_WRITE_DATA 3
39#define AX_ACTION 5
40#define AX_RESET 6
41
42// Constants
43#define AX_BROADCAST_ID 254
44#define AX_START 255
45
46// Configurations
47#define AX_DEFAULT_CCW_AL 1023
48#define AX_TIME_OUT 10
49
50#include <Arduino.h>
51#include <HardwareSerial.h>
52
54private:
55 HardwareSerial *serialPort;
56 void writeByte(byte b);
57 bool waitBytes(int n);
58
59 void writeMode();
60 void readMode();
61
62public:
63 void setSerial(HardwareSerial *sPort);
64 void begin(long baud);
65 void end();
66
67 void writeBuf(byte id, byte* buf, int len);
68
69 int readStatus();
70 int readWord();
71 int readDWord();
72};
73
75private:
76 byte id;
77public:
78 DynamixelMotor(byte id) : id(id) {}
79
80 int reset();
81 int ping();
82
83 int setID(byte newID);
84 int setBD(long baud);
85
86 int move(int Position);
87 int moveSpeed(int Position, int Speed);
88 int setEndless(bool Status);
89 int turn(bool SIDE, int Speed);
90
91 void action(void);
92
93 int setTempLimit(byte Temperature);
94 int setAngleLimit(int CWLimit, int CCWLimit);
95 int setVoltageLimit(byte DVoltage, byte UVoltage);
96 int setMaxTorque(int MaxTorque);
97 int setSRL(byte SRL);
98 int setRDT(byte RDT);
99 int setLEDAlarm(byte LEDAlarm);
100 int setShutdownAlarm(byte SALARM);
101 int setCMargin(byte CWCMargin, byte CCWCMargin);
102 int setCSlope(byte CWCSlope, byte CCWCSlope);
103 int setPunch(int Punch);
104
105 int moving();
106 int lockRegister();
107 int RWStatus();
108
109 int readTemperature();
110 int readVoltage();
111 int readPosition();
112 int readSpeed();
113 int readLoad();
114
115 int enableTorque(bool Status);
116 int enableLED(bool Status);
117};
118
120
121#endif
DynamixelInterface Dynamixel
Definition DynamixelSerial.cpp:319
Definition DynamixelSerial.h:53
void setSerial(HardwareSerial *sPort)
Definition DynamixelSerial.cpp:99
void begin(long baud)
Definition DynamixelSerial.cpp:103
void writeBuf(byte id, byte *buf, int len)
Definition DynamixelSerial.cpp:27
int readStatus()
Definition DynamixelSerial.cpp:83
int readWord()
Definition DynamixelSerial.cpp:45
int readDWord()
Definition DynamixelSerial.cpp:64
void end()
Definition DynamixelSerial.cpp:108
Definition DynamixelSerial.h:74
int reset()
Definition DynamixelSerial.cpp:112
int moveSpeed(int Position, int Speed)
Definition DynamixelSerial.cpp:147
int enableTorque(bool Status)
Definition DynamixelSerial.cpp:181
int setRDT(byte RDT)
Definition DynamixelSerial.cpp:249
int moving()
Definition DynamixelSerial.cpp:288
int readPosition()
Definition DynamixelSerial.cpp:199
int setCMargin(byte CWCMargin, byte CCWCMargin)
Definition DynamixelSerial.cpp:267
int setCSlope(byte CWCSlope, byte CCWCSlope)
Definition DynamixelSerial.cpp:273
int enableLED(bool Status)
Definition DynamixelSerial.cpp:187
int RWStatus()
Definition DynamixelSerial.cpp:300
void action(void)
Definition DynamixelSerial.cpp:176
int ping()
Definition DynamixelSerial.cpp:118
int setMaxTorque(int MaxTorque)
Definition DynamixelSerial.cpp:234
int lockRegister()
Definition DynamixelSerial.cpp:294
DynamixelMotor(byte id)
Definition DynamixelSerial.h:78
int setShutdownAlarm(byte SALARM)
Definition DynamixelSerial.cpp:261
int setVoltageLimit(byte DVoltage, byte UVoltage)
Definition DynamixelSerial.cpp:217
int setTempLimit(byte Temperature)
Definition DynamixelSerial.cpp:211
int setSRL(byte SRL)
Definition DynamixelSerial.cpp:243
int readSpeed()
Definition DynamixelSerial.cpp:306
int setAngleLimit(int CWLimit, int CCWLimit)
Definition DynamixelSerial.cpp:223
int readLoad()
Definition DynamixelSerial.cpp:312
int setID(byte newID)
Definition DynamixelSerial.cpp:124
int readVoltage()
Definition DynamixelSerial.cpp:205
int setPunch(int Punch)
Definition DynamixelSerial.cpp:279
int setEndless(bool Status)
Definition DynamixelSerial.cpp:158
int turn(bool SIDE, int Speed)
Definition DynamixelSerial.cpp:165
int readTemperature()
Definition DynamixelSerial.cpp:193
int setLEDAlarm(byte LEDAlarm)
Definition DynamixelSerial.cpp:255
int setBD(long baud)
Definition DynamixelSerial.cpp:130
int move(int Position)
Definition DynamixelSerial.cpp:138