FOrk
Dependencies: Servo AX12_final MX106_not_working comunication_1
MX.h@10:2acfa1a84c96, 2016-07-02 (annotated)
- Committer:
- clynamen
- Date:
- Sat Jul 02 18:06:59 2016 +0000
- Revision:
- 10:2acfa1a84c96
- Child:
- 11:19e8022f60ea
use MX base class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
clynamen | 10:2acfa1a84c96 | 1 | #ifndef MX_H |
clynamen | 10:2acfa1a84c96 | 2 | #define MX_H |
clynamen | 10:2acfa1a84c96 | 3 | |
clynamen | 10:2acfa1a84c96 | 4 | #define MX_REG_ID 0x3 |
clynamen | 10:2acfa1a84c96 | 5 | #define MX_REG_CW_LIMIT 0x06 |
clynamen | 10:2acfa1a84c96 | 6 | #define MX_REG_CCW_LIMIT 0x08 |
clynamen | 10:2acfa1a84c96 | 7 | #define MX_REG_GOAL_POSITION 0x1E |
clynamen | 10:2acfa1a84c96 | 8 | #define MX_REG_MOVING_SPEED 0x20 |
clynamen | 10:2acfa1a84c96 | 9 | #define MX_REG_VOLTS 0x2A |
clynamen | 10:2acfa1a84c96 | 10 | #define MX_REG_AMPERE 0x44 |
clynamen | 10:2acfa1a84c96 | 11 | #define MX_REG_TEMP 0x2B |
clynamen | 10:2acfa1a84c96 | 12 | #define MX_REG_PGAIN 0x1C |
clynamen | 10:2acfa1a84c96 | 13 | #define MX_REG_IGAIN 0x1B |
clynamen | 10:2acfa1a84c96 | 14 | #define MX_REG_DGAIN 0X1A |
clynamen | 10:2acfa1a84c96 | 15 | #define MX_REG_MOVING 0x2E |
clynamen | 10:2acfa1a84c96 | 16 | #define MX_REG_MAXTORQUE 0x22 |
clynamen | 10:2acfa1a84c96 | 17 | #define MX_REG_POSITION 0x24 |
clynamen | 10:2acfa1a84c96 | 18 | #define MX_RESOLUTION 0.088 |
clynamen | 10:2acfa1a84c96 | 19 | //bit per degrees 4095/360° |
clynamen | 10:2acfa1a84c96 | 20 | #define MX_REG_MOTORONOFF 0x18 |
clynamen | 10:2acfa1a84c96 | 21 | #define MX_BIT_DEG 11.375 |
clynamen | 10:2acfa1a84c96 | 22 | #define MX_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 23 | #define MX_TRIGGER_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 24 | #define MX_REG_CURRENT 0x44 |
clynamen | 10:2acfa1a84c96 | 25 | #define MX_REG_TEMP 0x2B |
clynamen | 10:2acfa1a84c96 | 26 | |
clynamen | 10:2acfa1a84c96 | 27 | #define MX_READ_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 28 | #define AX12_WRITE_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 29 | #define AX12_READ_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 30 | #define AX12_TRIGGER_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 31 | #define AX12_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 32 | |
clynamen | 10:2acfa1a84c96 | 33 | #define AX12_REG_ID 0x3 |
clynamen | 10:2acfa1a84c96 | 34 | #define AX12_REG_CW_LIMIT 0x06 |
clynamen | 10:2acfa1a84c96 | 35 | #define AX12_REG_CCW_LIMIT 0x08 |
clynamen | 10:2acfa1a84c96 | 36 | #define AX12_REG_GOAL_POSITION 0x1E |
clynamen | 10:2acfa1a84c96 | 37 | #define AX12_REG_MOVING_SPEED 0x20 |
clynamen | 10:2acfa1a84c96 | 38 | #define AX12_REG_VOLTS 0x2A |
clynamen | 10:2acfa1a84c96 | 39 | #define AX12_REG_TEMP 0x2B |
clynamen | 10:2acfa1a84c96 | 40 | #define AX12_REG_MOVING 0x2E |
clynamen | 10:2acfa1a84c96 | 41 | #define AX12_REG_POSITION 0x24 |
clynamen | 10:2acfa1a84c96 | 42 | #define AX12_REG_MAXTORQUE 0x22 |
clynamen | 10:2acfa1a84c96 | 43 | #define AX12_REG_MOTORONOFF 0x18 |
clynamen | 10:2acfa1a84c96 | 44 | #define AX12_MODE_POSITION 0 |
clynamen | 10:2acfa1a84c96 | 45 | #define AX12_MODE_ROTATION 1 |
clynamen | 10:2acfa1a84c96 | 46 | |
clynamen | 10:2acfa1a84c96 | 47 | #define AX12_CW 1 |
clynamen | 10:2acfa1a84c96 | 48 | #define AX12_CCW 1 |
clynamen | 10:2acfa1a84c96 | 49 | #define goal_resolution 0.08789 |
clynamen | 10:2acfa1a84c96 | 50 | |
clynamen | 10:2acfa1a84c96 | 51 | #define READ_DEBUG 1 |
clynamen | 10:2acfa1a84c96 | 52 | |
clynamen | 10:2acfa1a84c96 | 53 | #include "Joint.h" |
clynamen | 10:2acfa1a84c96 | 54 | |
clynamen | 10:2acfa1a84c96 | 55 | // TODO: spostare i metodi uguali da MX106, MX64 in questo file e in MX.cpp. |
clynamen | 10:2acfa1a84c96 | 56 | |
clynamen | 10:2acfa1a84c96 | 57 | class MX : public Joint |
clynamen | 10:2acfa1a84c96 | 58 | { |
clynamen | 10:2acfa1a84c96 | 59 | |
clynamen | 10:2acfa1a84c96 | 60 | public: |
clynamen | 10:2acfa1a84c96 | 61 | MX(communication_1& line, int ID, float gear_train); |
clynamen | 10:2acfa1a84c96 | 62 | virtual ~MX(); |
clynamen | 10:2acfa1a84c96 | 63 | void setID(int newID); |
clynamen | 10:2acfa1a84c96 | 64 | |
clynamen | 10:2acfa1a84c96 | 65 | /** Set the mode of the servo |
clynamen | 10:2acfa1a84c96 | 66 | * @param mode |
clynamen | 10:2acfa1a84c96 | 67 | * 0 = Positional, default |
clynamen | 10:2acfa1a84c96 | 68 | * 1 = Continuous rotation |
clynamen | 10:2acfa1a84c96 | 69 | */ |
clynamen | 10:2acfa1a84c96 | 70 | void setMode(int mode); |
clynamen | 10:2acfa1a84c96 | 71 | /** Set the clockwise limit of the servo |
clynamen | 10:2acfa1a84c96 | 72 | * |
clynamen | 10:2acfa1a84c96 | 73 | * @param degrees, 0-300 |
clynamen | 10:2acfa1a84c96 | 74 | */ |
clynamen | 10:2acfa1a84c96 | 75 | void setCWLimit(float degrees); |
clynamen | 10:2acfa1a84c96 | 76 | /** Set the counter-clockwise limit of the servo |
clynamen | 10:2acfa1a84c96 | 77 | * |
clynamen | 10:2acfa1a84c96 | 78 | * @param degrees, 0-300 |
clynamen | 10:2acfa1a84c96 | 79 | */ |
clynamen | 10:2acfa1a84c96 | 80 | void setCCWLimit(float degrees); |
clynamen | 10:2acfa1a84c96 | 81 | /** Set the speed of the servo in continuous rotation mode |
clynamen | 10:2acfa1a84c96 | 82 | * |
clynamen | 10:2acfa1a84c96 | 83 | * @param speed, -1.0 to 1.0 |
clynamen | 10:2acfa1a84c96 | 84 | * -1.0 = full speed counter clock wise |
clynamen | 10:2acfa1a84c96 | 85 | * 1.0 = full speed clock wise |
clynamen | 10:2acfa1a84c96 | 86 | */ |
clynamen | 10:2acfa1a84c96 | 87 | void setCRSpeed(float speed); |
clynamen | 10:2acfa1a84c96 | 88 | void setGoalPosition(float degrees); |
clynamen | 10:2acfa1a84c96 | 89 | float getPosition(); |
clynamen | 10:2acfa1a84c96 | 90 | |
clynamen | 10:2acfa1a84c96 | 91 | /** Set goal angle in integer degrees, in positional mode |
clynamen | 10:2acfa1a84c96 | 92 | * |
clynamen | 10:2acfa1a84c96 | 93 | * @param degrees 0-300 |
clynamen | 10:2acfa1a84c96 | 94 | * @param flags, defaults to 0 |
clynamen | 10:2acfa1a84c96 | 95 | * flags[0] = blocking, return when goal position reached |
clynamen | 10:2acfa1a84c96 | 96 | * flags[1] = register, activate with a broadcast trigger |
clynamen | 10:2acfa1a84c96 | 97 | * |
clynamen | 10:2acfa1a84c96 | 98 | */ |
clynamen | 10:2acfa1a84c96 | 99 | int setGoal(float degrees, int flags = 0); |
clynamen | 10:2acfa1a84c96 | 100 | void setSpeed(float goal_speed); |
clynamen | 10:2acfa1a84c96 | 101 | float getTemp(); |
clynamen | 10:2acfa1a84c96 | 102 | float getCurrent(); |
clynamen | 10:2acfa1a84c96 | 103 | float getVolts(); |
clynamen | 10:2acfa1a84c96 | 104 | float getPGain(); |
clynamen | 10:2acfa1a84c96 | 105 | float getIGain(); |
clynamen | 10:2acfa1a84c96 | 106 | float getDGain(); |
clynamen | 10:2acfa1a84c96 | 107 | void setMaxTorque(float torque); |
clynamen | 10:2acfa1a84c96 | 108 | void setMotorEnabled(bool enabled); |
clynamen | 10:2acfa1a84c96 | 109 | bool isMoving(); |
clynamen | 10:2acfa1a84c96 | 110 | |
clynamen | 10:2acfa1a84c96 | 111 | protected: |
clynamen | 10:2acfa1a84c96 | 112 | communication_1& _line; |
clynamen | 10:2acfa1a84c96 | 113 | float _gear_train; |
clynamen | 10:2acfa1a84c96 | 114 | int _ID; |
clynamen | 10:2acfa1a84c96 | 115 | int _mode; |
clynamen | 10:2acfa1a84c96 | 116 | }; |
clynamen | 10:2acfa1a84c96 | 117 | |
clynamen | 10:2acfa1a84c96 | 118 | #endif |