config AX12

Fork of configure_ax12_test_bras_module by CRAC Team

Committer:
slowness
Date:
Wed Feb 03 14:01:53 2016 +0000
Revision:
0:c03cffe402df
Child:
1:fce3323d874f
Pour configurer les AX12 avec la carte NXP1768 sur les Pin 9 et 10

Who changed what in which revision?

UserRevisionLine numberNew contents of line
slowness 0:c03cffe402df 1 /* mbed AX-12+ Servo Library
slowness 0:c03cffe402df 2 *
slowness 0:c03cffe402df 3 * Copyright (c) 2010, cstyles (http://mbed.org)
slowness 0:c03cffe402df 4 *
slowness 0:c03cffe402df 5 * Permission is hereby granted, free of charge, to any person obtaining a copy
slowness 0:c03cffe402df 6 * of this software and associated documentation files (the "Software"), to deal
slowness 0:c03cffe402df 7 * in the Software without restriction, including without limitation the rights
slowness 0:c03cffe402df 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
slowness 0:c03cffe402df 9 * copies of the Software, and to permit persons to whom the Software is
slowness 0:c03cffe402df 10 * furnished to do so, subject to the following conditions:
slowness 0:c03cffe402df 11 *
slowness 0:c03cffe402df 12 * The above copyright notice and this permission notice shall be included in
slowness 0:c03cffe402df 13 * all copies or substantial portions of the Software.
slowness 0:c03cffe402df 14 *
slowness 0:c03cffe402df 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
slowness 0:c03cffe402df 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
slowness 0:c03cffe402df 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
slowness 0:c03cffe402df 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
slowness 0:c03cffe402df 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
slowness 0:c03cffe402df 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
slowness 0:c03cffe402df 21 * THE SOFTWARE.
slowness 0:c03cffe402df 22 */
slowness 0:c03cffe402df 23
slowness 0:c03cffe402df 24 #ifndef MBED_AX12_H
slowness 0:c03cffe402df 25 #define MBED_AX12_H
slowness 0:c03cffe402df 26
slowness 0:c03cffe402df 27 #include "mbed.h"
slowness 0:c03cffe402df 28
slowness 0:c03cffe402df 29 //#define AX12_WRITE_DEBUG 0
slowness 0:c03cffe402df 30 //#define AX12_READ_DEBUG
slowness 0:c03cffe402df 31 //#define AX12_TRIGGER_DEBUG 0
slowness 0:c03cffe402df 32 //#define AX12_DEBUG 0
slowness 0:c03cffe402df 33
slowness 0:c03cffe402df 34 /****** à utiliser pour le debug !! ******/
slowness 0:c03cffe402df 35
slowness 0:c03cffe402df 36 //#define AX12_DEBUG_WRITE 0
slowness 0:c03cffe402df 37 //#define AX12_DEBUG_READ 0
slowness 0:c03cffe402df 38
slowness 0:c03cffe402df 39 /******************************************/
slowness 0:c03cffe402df 40
slowness 0:c03cffe402df 41
slowness 0:c03cffe402df 42 #define AX12_REG_ID 0x03
slowness 0:c03cffe402df 43 #define AX12_REG_BAUD 0x04
slowness 0:c03cffe402df 44 #define AX12_REG_DELAY_TIME 0x05
slowness 0:c03cffe402df 45 #define AX12_REG_CW_LIMIT 0x06
slowness 0:c03cffe402df 46 #define AX12_REG_CCW_LIMIT 0x08
slowness 0:c03cffe402df 47 #define AX12_REG_TEMP_MAX 0x0B
slowness 0:c03cffe402df 48 #define AX12_REG_LOWEST_VOLTAGE 0x0C
slowness 0:c03cffe402df 49 #define AX12_REG_HIGHEST_VOLTAGE 0x0D
slowness 0:c03cffe402df 50 #define AX12_REG_MAX_TORQUE 0x0E
slowness 0:c03cffe402df 51 #define AX12_REG_SATUS_RETURN 0x10
slowness 0:c03cffe402df 52 #define AX12_REG_ALARM_LED 0x11
slowness 0:c03cffe402df 53 #define AX12_REG_ALARM_SHUTDOWN 0x12
slowness 0:c03cffe402df 54 #define AX12_REG_DOWN_CALIBRATION 0x14
slowness 0:c03cffe402df 55 #define AX12_REG_UP_CALIBRATION 0x16
slowness 0:c03cffe402df 56 #define AX12_REG_TORQUE_ENABLE 0x18
slowness 0:c03cffe402df 57 #define AX12_REG_LED 0x19
slowness 0:c03cffe402df 58 #define AX12_REG_CW_MARGIN 0x1A
slowness 0:c03cffe402df 59 #define AX12_REG_CCW_MARGIN 0x1B
slowness 0:c03cffe402df 60 #define AX12_REG_CW_SLOPE 0x1C
slowness 0:c03cffe402df 61 #define AX12_REG_CCW_SLOPE 0x1D
slowness 0:c03cffe402df 62 #define AX12_REG_GOAL_POSITION 0x1E
slowness 0:c03cffe402df 63 #define AX12_REG_MOVING_SPEED 0x20
slowness 0:c03cffe402df 64 #define AX12_REG_TORQUE_LIMIT 0x22
slowness 0:c03cffe402df 65 #define AX12_REG_POSITION 0x24
slowness 0:c03cffe402df 66 #define AX12_REG_PRESENT_SPEED 0x26
slowness 0:c03cffe402df 67 #define AX12_REG_PRESENT_LOAD 0x28
slowness 0:c03cffe402df 68 #define AX12_REG_VOLTS 0x2A
slowness 0:c03cffe402df 69 #define AX12_REG_TEMP 0x2B
slowness 0:c03cffe402df 70 #define AX12_REG_INSTRUCTION 0x2C
slowness 0:c03cffe402df 71 #define AX12_REG_MOVING 0x2E
slowness 0:c03cffe402df 72 #define AX12_REG_LOCK 0x2F
slowness 0:c03cffe402df 73 #define AX12_REG_PUNCH 0x30
slowness 0:c03cffe402df 74
slowness 0:c03cffe402df 75
slowness 0:c03cffe402df 76 #define AX12_MODE_POSITION 0
slowness 0:c03cffe402df 77 #define AX12_MODE_ROTATION 1
slowness 0:c03cffe402df 78
slowness 0:c03cffe402df 79 #define AX12_CW 1
slowness 0:c03cffe402df 80 #define AX12_CCW 0
slowness 0:c03cffe402df 81
slowness 0:c03cffe402df 82 //--- Instruction ---
slowness 0:c03cffe402df 83 #define INST_PING 0x01
slowness 0:c03cffe402df 84 #define INST_READ 0x02
slowness 0:c03cffe402df 85 #define INST_WRITE 0x03
slowness 0:c03cffe402df 86 #define INST_REG_WRITE 0x04
slowness 0:c03cffe402df 87 #define INST_ACTION 0x05
slowness 0:c03cffe402df 88 #define INST_RESET 0x06
slowness 0:c03cffe402df 89 #define INST_DIGITAL_RESET 0x07
slowness 0:c03cffe402df 90 #define INST_SYSTEM_READ 0x0C
slowness 0:c03cffe402df 91 #define INST_SYSTEM_WRITE 0x0D
slowness 0:c03cffe402df 92 #define INST_SYNC_WRITE 0x83
slowness 0:c03cffe402df 93 #define INST_SYNC_REG_WRITE 0x84
slowness 0:c03cffe402df 94
slowness 0:c03cffe402df 95 #define DEFAULT_RETURN_PACKET_SIZE 6
slowness 0:c03cffe402df 96
slowness 0:c03cffe402df 97 #define BROADCASTING_ID 0xfe
slowness 0:c03cffe402df 98
slowness 0:c03cffe402df 99 /** Servo control class, based on a PwmOut
slowness 0:c03cffe402df 100 *
slowness 0:c03cffe402df 101 * Example:
slowness 0:c03cffe402df 102 * @code
slowness 0:c03cffe402df 103 * #include "mbed.h"
slowness 0:c03cffe402df 104 * #include "AX12.h"
slowness 0:c03cffe402df 105 *
slowness 0:c03cffe402df 106 * int main() {
slowness 0:c03cffe402df 107 *
slowness 0:c03cffe402df 108 * AX12 myax12 (p9, p10, 1);
slowness 0:c03cffe402df 109 *
slowness 0:c03cffe402df 110 * while (1) {
slowness 0:c03cffe402df 111 * myax12.SetGoal(0); // go to 0 degrees
slowness 0:c03cffe402df 112 * wait (2.0);
slowness 0:c03cffe402df 113 * myax12.SetGoal(300); // go to 300 degrees
slowness 0:c03cffe402df 114 * wait (2.0);
slowness 0:c03cffe402df 115 * }
slowness 0:c03cffe402df 116 * }
slowness 0:c03cffe402df 117 * @endcode
slowness 0:c03cffe402df 118 */
slowness 0:c03cffe402df 119 class AX12
slowness 0:c03cffe402df 120 {
slowness 0:c03cffe402df 121
slowness 0:c03cffe402df 122 public:
slowness 0:c03cffe402df 123
slowness 0:c03cffe402df 124 /** Create an AX12 servo object connected to the specified serial port, with the specified ID
slowness 0:c03cffe402df 125 *
slowness 0:c03cffe402df 126 * @param pin tx pin
slowness 0:c03cffe402df 127 * @param pin rx pin
slowness 0:c03cffe402df 128 * @param int ID, the Bus ID of the servo 1-255
slowness 0:c03cffe402df 129 */
slowness 0:c03cffe402df 130 AX12(PinName tx, PinName rx, int ID, int baud=1000000);
slowness 0:c03cffe402df 131
slowness 0:c03cffe402df 132 /** Nouvelle fonction de commande de position du servomoteur avec sécurité d'arriver à la bonne position
slowness 0:c03cffe402df 133 Si une erreur se produit et que le servo ne recoit vraiment rien cette fonction dispose d'une sortie en timeout error;
slowness 0:c03cffe402df 134 */
slowness 0:c03cffe402df 135 int Set_Secure_Goal(int degres);
slowness 0:c03cffe402df 136
slowness 0:c03cffe402df 137 /** Retourne le temps d'attente avant l'envoi de la trame de retour par l'actionneur ( en micro seconde )
slowness 0:c03cffe402df 138 */
slowness 0:c03cffe402df 139 int Get_Return_Delay_Time(void);
slowness 0:c03cffe402df 140
slowness 0:c03cffe402df 141
slowness 0:c03cffe402df 142 /** Retourne la vitesse de communication de l'actionneur ( en Bits/seconde )
slowness 0:c03cffe402df 143 */
slowness 0:c03cffe402df 144 int Get_Baud_Rate(void);
slowness 0:c03cffe402df 145
slowness 0:c03cffe402df 146
slowness 0:c03cffe402df 147 /** Reglage du courant minimum necessaire au bon fonctionnement de l'actionneur
slowness 0:c03cffe402df 148 // minimum >> Ox000 >> decimal 0
slowness 0:c03cffe402df 149 // maximum >> 0x3FF >> decimal 1023
slowness 0:c03cffe402df 150 // deflaut >> 0x20 >> decimal 32
slowness 0:c03cffe402df 151 */
slowness 0:c03cffe402df 152 int Set_Punch(int punch);
slowness 0:c03cffe402df 153
slowness 0:c03cffe402df 154
slowness 0:c03cffe402df 155 /** Retourne le courant minimum au fonctionnement de l'actionneur
slowness 0:c03cffe402df 156 */
slowness 0:c03cffe402df 157 int Get_Punch (void);
slowness 0:c03cffe402df 158
slowness 0:c03cffe402df 159
slowness 0:c03cffe402df 160 /** Retourne l'ampleur de la charge sur l'actionneur
slowness 0:c03cffe402df 161 */
slowness 0:c03cffe402df 162 int Get_Load_Value (void);
slowness 0:c03cffe402df 163
slowness 0:c03cffe402df 164 void read_all_info(unsigned char, unsigned char);
slowness 0:c03cffe402df 165
slowness 0:c03cffe402df 166 /** Reset
slowness 0:c03cffe402df 167 */
slowness 0:c03cffe402df 168 int Reset(int);
slowness 0:c03cffe402df 169
slowness 0:c03cffe402df 170 /** Retourne la direction de la charge sur l'actionneur
slowness 0:c03cffe402df 171 */
slowness 0:c03cffe402df 172 int Get_Load_Direction (void);
slowness 0:c03cffe402df 173
slowness 0:c03cffe402df 174
slowness 0:c03cffe402df 175 /** Retourne la vitesse angulaire actuelle de l'actionneur
slowness 0:c03cffe402df 176 */
slowness 0:c03cffe402df 177 int Get_Present_Speed (void);
slowness 0:c03cffe402df 178
slowness 0:c03cffe402df 179
slowness 0:c03cffe402df 180 /** Retourne la valeur en degres du registre CCW angle limit qui est l'angle limite maximum de l'actionneur
slowness 0:c03cffe402df 181 */
slowness 0:c03cffe402df 182 int Get_CCW_Angle_Limit (void);
slowness 0:c03cffe402df 183
slowness 0:c03cffe402df 184
slowness 0:c03cffe402df 185 /** Retourne la valeur en degres du registre CW angle limit qui est l'angle limite minimum de l'actionneur
slowness 0:c03cffe402df 186 */
slowness 0:c03cffe402df 187 int Get_CW_Angle_Limit (void);
slowness 0:c03cffe402df 188
slowness 0:c03cffe402df 189
slowness 0:c03cffe402df 190 /** Retourne la valeur du registre Torque Enable
slowness 0:c03cffe402df 191 */
slowness 0:c03cffe402df 192 int Get_Torque_Enable(void);
slowness 0:c03cffe402df 193
slowness 0:c03cffe402df 194
slowness 0:c03cffe402df 195 /**
slowness 0:c03cffe402df 196 1 >>>
slowness 0:c03cffe402df 197 0 >>>
slowness 0:c03cffe402df 198 */
slowness 0:c03cffe402df 199 int Set_Torque_Enable(int etat);
slowness 0:c03cffe402df 200
slowness 0:c03cffe402df 201
slowness 0:c03cffe402df 202 /** Retourne les données de compensation des différences entre les potentiomètres
slowness 0:c03cffe402df 203 utilisés dans l'AX12 (Up) ????????
slowness 0:c03cffe402df 204 */
slowness 0:c03cffe402df 205 int Get_Up_Calibration (void);
slowness 0:c03cffe402df 206
slowness 0:c03cffe402df 207
slowness 0:c03cffe402df 208 /** Retourne les données de compensation des différences entre les potentiomètres
slowness 0:c03cffe402df 209 utilisés dans l'AX12 (Dowm) ????????
slowness 0:c03cffe402df 210 */
slowness 0:c03cffe402df 211 int Get_Down_Calibration(void);
slowness 0:c03cffe402df 212
slowness 0:c03cffe402df 213
slowness 0:c03cffe402df 214 /** Retourne l'ID de l'AX_12 avec lequel on dialogue
slowness 0:c03cffe402df 215 utile seulement dans le cas d'un broadcast ID
slowness 0:c03cffe402df 216 */
slowness 0:c03cffe402df 217 int Get_ID(void);
slowness 0:c03cffe402df 218
slowness 0:c03cffe402df 219
slowness 0:c03cffe402df 220 /** Reglage du couple maximum de l'actionneur
slowness 0:c03cffe402df 221 // minimum >> Ox000 >> decimal 0
slowness 0:c03cffe402df 222 // maximum >> 0x3FF >> decimal 1023
slowness 0:c03cffe402df 223 // deflaut >> >> decimal
slowness 0:c03cffe402df 224 */
slowness 0:c03cffe402df 225 int Set_Max_Torque(int torque);
slowness 0:c03cffe402df 226
slowness 0:c03cffe402df 227
slowness 0:c03cffe402df 228 /** Reglage de la desactivation des actionneurs si une erreur le concernant se produit
slowness 0:c03cffe402df 229 Bit Function
slowness 0:c03cffe402df 230 Bit 7 0
slowness 0:c03cffe402df 231 Bit 6 If set to 1, torque off when an Instruction Error occurs
slowness 0:c03cffe402df 232 Bit 5 If set to 1, torque off when an Overload Error occurs
slowness 0:c03cffe402df 233 Bit 4 If set to 1, torque off when a Checksum Error occurs
slowness 0:c03cffe402df 234 Bit 3 If set to 1, torque off when a Range Error occurs
slowness 0:c03cffe402df 235 Bit 2 If set to 1, torque off when an Overheating Error occurs
slowness 0:c03cffe402df 236 Bit 1 If set to 1, torque off when an Angle Limit Error occurs
slowness 0:c03cffe402df 237 Bit 0 If set to 1, torque off when an Input Voltage Error occurs
slowness 0:c03cffe402df 238 */
slowness 0:c03cffe402df 239 int Set_Alarm_Shutdown(int valeur);
slowness 0:c03cffe402df 240
slowness 0:c03cffe402df 241
slowness 0:c03cffe402df 242 /** Reglage de l'activation de l'alarme
slowness 0:c03cffe402df 243 Bit Function
slowness 0:c03cffe402df 244 Bit 7 0
slowness 0:c03cffe402df 245 Bit 6 If set to 1, the LED blinks when an Instruction Error occurs
slowness 0:c03cffe402df 246 Bit 5 If set to 1, the LED blinks when an Overload Error occurs
slowness 0:c03cffe402df 247 Bit 4 If set to 1, the LED blinks when a Checksum Error occurs
slowness 0:c03cffe402df 248 Bit 3 If set to 1, the LED blinks when a Range Error occurs
slowness 0:c03cffe402df 249 Bit 2 If set to 1, the LED blinks when an Overheating Error occurs
slowness 0:c03cffe402df 250 Bit 1 If set to 1, the LED blinks when an Angle Limit Error occurs
slowness 0:c03cffe402df 251 Bit 0 If set to 1, the LED blinks when an Input Voltage Error occurs
slowness 0:c03cffe402df 252 */
slowness 0:c03cffe402df 253 int Set_Alarm_LED(int valeur);
slowness 0:c03cffe402df 254
slowness 0:c03cffe402df 255
slowness 0:c03cffe402df 256 /** Reglage de la réponse à une instruction
slowness 0:c03cffe402df 257 * @param mode
slowness 0:c03cffe402df 258 * 0 >> ne repond a aucune instructions
slowness 0:c03cffe402df 259 * 1 >> repond seulement aux instructions READ_DATA
slowness 0:c03cffe402df 260 * 2 >> repond à toutes les instructions
slowness 0:c03cffe402df 261 */
slowness 0:c03cffe402df 262 int Set_Status_Return_Level(int etat);
slowness 0:c03cffe402df 263
slowness 0:c03cffe402df 264
slowness 0:c03cffe402df 265 /** Reglage de la tension minimale
slowness 0:c03cffe402df 266 * @param mode
slowness 0:c03cffe402df 267 * minimum >> 0x32 >> decimal 50
slowness 0:c03cffe402df 268 * maximum >> 0xFA >> decimal 250
slowness 0:c03cffe402df 269 * deflaut >> 0x3C >> decimal 60
slowness 0:c03cffe402df 270 */
slowness 0:c03cffe402df 271 int Set_Lowest_Voltage(int val_lowest_voltage);
slowness 0:c03cffe402df 272
slowness 0:c03cffe402df 273
slowness 0:c03cffe402df 274 /** Reglage de la tension maximale
slowness 0:c03cffe402df 275 * @param mode
slowness 0:c03cffe402df 276 * minimum >> Ox32 >> decimal 50
slowness 0:c03cffe402df 277 * maximum >> 0xFA >> decimal 250
slowness 0:c03cffe402df 278 * deflaut >> 0xBE >> decimal 190
slowness 0:c03cffe402df 279 */
slowness 0:c03cffe402df 280 int Set_Highest_Voltage(int val_highest_voltage);
slowness 0:c03cffe402df 281
slowness 0:c03cffe402df 282
slowness 0:c03cffe402df 283 // Reglage du return time delay EN MICRO SECONDE 2uSec * val_delay_time
slowness 0:c03cffe402df 284 // minimum >> 0 us
slowness 0:c03cffe402df 285 // maximum >> 508 us
slowness 0:c03cffe402df 286 // deflaut >> 125 us
slowness 0:c03cffe402df 287 int Set_Delay_Time (int val_delay_time );
slowness 0:c03cffe402df 288
slowness 0:c03cffe402df 289
slowness 0:c03cffe402df 290 /** Set Highest Limit Temperature
slowness 0:c03cffe402df 291 * @param mode
slowness 0:c03cffe402df 292 * minimum >> Ox00 >> decimal 0
slowness 0:c03cffe402df 293 * maximum >> 0x96 >> decimal 150
slowness 0:c03cffe402df 294 */
slowness 0:c03cffe402df 295 int Set_Temperature_Max (int val_temperature );
slowness 0:c03cffe402df 296
slowness 0:c03cffe402df 297
slowness 0:c03cffe402df 298
slowness 0:c03cffe402df 299 /** Set the state of LED
slowness 0:c03cffe402df 300 * @param mode
slowness 0:c03cffe402df 301 * 0 = off, default
slowness 0:c03cffe402df 302 * 1 = on
slowness 0:c03cffe402df 303 */
slowness 0:c03cffe402df 304 int Set_Etat_LED(int etat);
slowness 0:c03cffe402df 305
slowness 0:c03cffe402df 306
slowness 0:c03cffe402df 307
slowness 0:c03cffe402df 308 /** Set the mode of the servo
slowness 0:c03cffe402df 309 * @param mode
slowness 0:c03cffe402df 310 * 0 = Positional, default
slowness 0:c03cffe402df 311 * 1 = Continuous rotation
slowness 0:c03cffe402df 312 */
slowness 0:c03cffe402df 313 int Set_Mode(int mode);
slowness 0:c03cffe402df 314
slowness 0:c03cffe402df 315 /** Set baud rate of all attached servos
slowness 0:c03cffe402df 316 * @param mode
slowness 0:c03cffe402df 317 * 0x01 = 1,000,000 bps
slowness 0:c03cffe402df 318 * 0x03 = 500,000 bps
slowness 0:c03cffe402df 319 * 0x04 = 400,000 bps
slowness 0:c03cffe402df 320 * 0x07 = 250,000 bps
slowness 0:c03cffe402df 321 * 0x09 = 200,000 bps
slowness 0:c03cffe402df 322 * 0x10 = 115,200 bps
slowness 0:c03cffe402df 323 * 0x22 = 57,600 bps
slowness 0:c03cffe402df 324 * 0x67 = 19,200 bps
slowness 0:c03cffe402df 325 * 0xCF = 9,600 bp
slowness 0:c03cffe402df 326 */
slowness 0:c03cffe402df 327 int Set_Baud(int baud);
slowness 0:c03cffe402df 328
slowness 0:c03cffe402df 329
slowness 0:c03cffe402df 330 /** Set goal angle in integer degrees, in positional mode
slowness 0:c03cffe402df 331 *
slowness 0:c03cffe402df 332 * @param degrees 0-300
slowness 0:c03cffe402df 333 * @param flags, defaults to 0
slowness 0:c03cffe402df 334 * flags[0] = blocking, return when goal position reached
slowness 0:c03cffe402df 335 * flags[1] = register, activate with a broadcast trigger
slowness 0:c03cffe402df 336 *
slowness 0:c03cffe402df 337 */
slowness 0:c03cffe402df 338 int Set_Goal(int degrees, int flags = 0);
slowness 0:c03cffe402df 339
slowness 0:c03cffe402df 340
slowness 0:c03cffe402df 341 /** Set the speed of the servo in continuous rotation mode
slowness 0:c03cffe402df 342 *
slowness 0:c03cffe402df 343 * @param speed, -1.0 to 1.0
slowness 0:c03cffe402df 344 * -1.0 = full speed counter clock wise
slowness 0:c03cffe402df 345 * 1.0 = full speed clock wise
slowness 0:c03cffe402df 346 */
slowness 0:c03cffe402df 347 int Set_CR_Speed(float speed);
slowness 0:c03cffe402df 348
slowness 0:c03cffe402df 349
slowness 0:c03cffe402df 350 /** Permet de définir l'angle limite minimum de l'actionneur ( prend une valeur d'entrée en degres )
slowness 0:c03cffe402df 351 // minimum >> 0°
slowness 0:c03cffe402df 352 // maximum >> 300°
slowness 0:c03cffe402df 353 // deflaut >> 0°
slowness 0:c03cffe402df 354 */
slowness 0:c03cffe402df 355 int Set_CW_Angle_Limit(int degrees);
slowness 0:c03cffe402df 356
slowness 0:c03cffe402df 357 /** Permet de définir l'angle limite maximum de l'actionneur ( prend une valeur d'entrée en degres )
slowness 0:c03cffe402df 358 // minimum >> 0°
slowness 0:c03cffe402df 359 // maximum >> 300°
slowness 0:c03cffe402df 360 // deflaut >> 300°
slowness 0:c03cffe402df 361 */
slowness 0:c03cffe402df 362 int Set_CCW_Angle_Limit(int degrees);
slowness 0:c03cffe402df 363
slowness 0:c03cffe402df 364 // Change the ID
slowness 0:c03cffe402df 365
slowness 0:c03cffe402df 366 /** Change the ID of a servo
slowness 0:c03cffe402df 367 *
slowness 0:c03cffe402df 368 * @param CurentID 1-255
slowness 0:c03cffe402df 369 * @param NewID 1-255
slowness 0:c03cffe402df 370 *
slowness 0:c03cffe402df 371 * If a servo ID is not know, the broadcast address of 0 can be used for CurrentID.
slowness 0:c03cffe402df 372 * In this situation, only one servo should be connected to the bus
slowness 0:c03cffe402df 373 */
slowness 0:c03cffe402df 374 int Set_ID(int CurrentID, int NewID);
slowness 0:c03cffe402df 375
slowness 0:c03cffe402df 376
slowness 0:c03cffe402df 377 /** Poll to see if the servo is moving
slowness 0:c03cffe402df 378 *
slowness 0:c03cffe402df 379 * @returns true is the servo is moving
slowness 0:c03cffe402df 380 */
slowness 0:c03cffe402df 381 int isMoving(void);
slowness 0:c03cffe402df 382
slowness 0:c03cffe402df 383 /** Send the broadcast "trigger" command, to activate any outstanding registered commands
slowness 0:c03cffe402df 384 */
slowness 0:c03cffe402df 385 void trigger(void);
slowness 0:c03cffe402df 386
slowness 0:c03cffe402df 387 /** Send the "reset" command, to activate any outstanding registered commands
slowness 0:c03cffe402df 388 */
slowness 0:c03cffe402df 389 void reset();
slowness 0:c03cffe402df 390
slowness 0:c03cffe402df 391 /** Read the current angle of the servo
slowness 0:c03cffe402df 392 *
slowness 0:c03cffe402df 393 * @returns float in the range 0.0-300.0
slowness 0:c03cffe402df 394 */
slowness 0:c03cffe402df 395 float Get_Position();
slowness 0:c03cffe402df 396
slowness 0:c03cffe402df 397 /** Read the temperature of the servo
slowness 0:c03cffe402df 398 *
slowness 0:c03cffe402df 399 * @returns float temperature
slowness 0:c03cffe402df 400 */
slowness 0:c03cffe402df 401 float Get_Temp(void);
slowness 0:c03cffe402df 402
slowness 0:c03cffe402df 403 /** Read the supply voltage of the servo
slowness 0:c03cffe402df 404 *
slowness 0:c03cffe402df 405 * @returns float voltage
slowness 0:c03cffe402df 406 */
slowness 0:c03cffe402df 407 float Get_Volts(void);
slowness 0:c03cffe402df 408
slowness 0:c03cffe402df 409 // Lecture du couple maximum ( retourne la valeur du registre Max Torque de l'AX12 )
slowness 0:c03cffe402df 410 int Get_Max_Torque (void);
slowness 0:c03cffe402df 411
slowness 0:c03cffe402df 412
slowness 0:c03cffe402df 413 int read(int ID, int start, int length, char* data);
slowness 0:c03cffe402df 414 int write(int ID, int start, int length, char* data, int flag=0);
slowness 0:c03cffe402df 415
slowness 0:c03cffe402df 416 private :
slowness 0:c03cffe402df 417
slowness 0:c03cffe402df 418 SerialHalfDuplex _ax12;
slowness 0:c03cffe402df 419 int _ID;
slowness 0:c03cffe402df 420 int _baud;
slowness 0:c03cffe402df 421
slowness 0:c03cffe402df 422
slowness 0:c03cffe402df 423 };
slowness 0:c03cffe402df 424
slowness 0:c03cffe402df 425 #endif