Programme de contrôle de l'octopode 4DOF, Theraphosa-Salconi.

Dependencies:   debug mbed

CtrlBridge

  • fonction quelquonque pour communiquer avec les module
  • fonction quelquonque pour faire des recherche dans les module dispo
  • autre fonction pour jouer avec MemRegistre

Version 1.2.0

  • Ajout d'un mode de simulation pour tester le code avec seulement un contrôleur stm32
Committer:
salco
Date:
Mon Apr 27 20:41:21 2015 +0000
Revision:
19:0ac80045ba4c
Parent:
2:4c5b0f6d0a6b
Child:
27:ea60d12dccdf
modification de homemade s?quence pour simplifier le codage et la modification future des s?quence si besoin est.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
salco 0:e4151abdff23 1 /*
salco 0:e4151abdff23 2 * Patte.h
salco 0:e4151abdff23 3 *
salco 0:e4151abdff23 4 * Created on: Mar 03, 2015
salco 0:e4151abdff23 5 * Author: salco
salco 0:e4151abdff23 6 */
salco 0:e4151abdff23 7 #ifndef PATTE_H_
salco 0:e4151abdff23 8 #define PATTE_H_
salco 0:e4151abdff23 9
salco 0:e4151abdff23 10 #define NBR_SERVO 32
salco 0:e4151abdff23 11 #define DEFAULTPOSITION 150
salco 0:e4151abdff23 12 #define DEFAULTMAX 225
salco 0:e4151abdff23 13 #define DEFAULTMIN 75
salco 0:e4151abdff23 14
salco 0:e4151abdff23 15 //#include <string>
salco 0:e4151abdff23 16 #include <stdio.h>
salco 0:e4151abdff23 17
salco 0:e4151abdff23 18 struct servo_t {
salco 0:e4151abdff23 19 char iD; //use for ssc-32
salco 0:e4151abdff23 20 // all value down is a pulse value between 750-2250 //
salco 0:e4151abdff23 21 unsigned char basePose;
salco 0:e4151abdff23 22 unsigned char max;
salco 0:e4151abdff23 23 unsigned char min;
salco 0:e4151abdff23 24 // mabey change curr for a integer to get more precision and less space //
salco 0:e4151abdff23 25 unsigned char curr;
salco 0:e4151abdff23 26 };
salco 0:e4151abdff23 27
salco 0:e4151abdff23 28 class Patte
salco 0:e4151abdff23 29 {
salco 0:e4151abdff23 30 // number related to the SSC-32 //
salco 0:e4151abdff23 31 /*char m_numServo_Coxa;
salco 0:e4151abdff23 32 char m_numServo_Femur;
salco 0:e4151abdff23 33 char m_numServo_Tibia;
salco 0:e4151abdff23 34 char m_numServo_Tars;*/
salco 0:e4151abdff23 35 char m_id;
salco 0:e4151abdff23 36 servo_t m_Coxa;
salco 0:e4151abdff23 37 servo_t m_Femur;
salco 0:e4151abdff23 38 servo_t m_Tibia;
salco 0:e4151abdff23 39 servo_t m_Tars;
salco 0:e4151abdff23 40 char buffer [50];
salco 0:e4151abdff23 41
salco 0:e4151abdff23 42 public:
salco 0:e4151abdff23 43 Patte(char patteId,char coxaId,char femurId,char tibiaId,char tarsId) {
salco 0:e4151abdff23 44 m_id = patteId;
salco 0:e4151abdff23 45
salco 0:e4151abdff23 46 m_Coxa.iD = coxaId;
salco 0:e4151abdff23 47 m_Coxa.max = DEFAULTMAX;
salco 0:e4151abdff23 48 m_Coxa.min = DEFAULTMIN;
salco 0:e4151abdff23 49 m_Coxa.curr= DEFAULTPOSITION;
salco 0:e4151abdff23 50
salco 0:e4151abdff23 51 m_Femur.iD = femurId;
salco 0:e4151abdff23 52 m_Femur.max = DEFAULTMAX;
salco 0:e4151abdff23 53 m_Femur.min = DEFAULTMIN;
salco 0:e4151abdff23 54 m_Femur.curr= DEFAULTPOSITION;
salco 0:e4151abdff23 55
salco 0:e4151abdff23 56 m_Tibia.iD = tibiaId;
salco 0:e4151abdff23 57 m_Tibia.max = DEFAULTMAX;
salco 0:e4151abdff23 58 m_Tibia.min = DEFAULTMIN;
salco 0:e4151abdff23 59 m_Tibia.curr= DEFAULTPOSITION;
salco 0:e4151abdff23 60
salco 0:e4151abdff23 61 m_Tars.iD = tarsId;
salco 0:e4151abdff23 62 m_Tars.max = DEFAULTMAX;
salco 0:e4151abdff23 63 m_Tars.min = DEFAULTMIN;
salco 0:e4151abdff23 64 m_Tars.curr= DEFAULTPOSITION;
salco 0:e4151abdff23 65 }
salco 0:e4151abdff23 66 virtual ~Patte(){}
salco 0:e4151abdff23 67 char id(void) {
salco 0:e4151abdff23 68 return m_id;
salco 0:e4151abdff23 69 }
salco 0:e4151abdff23 70 const char* toString(void){
salco 0:e4151abdff23 71
salco 19:0ac80045ba4c 72 sprintf (buffer,"#%d P%d0 #%d P%d0 #%d P%d0 #%d P%d0",m_Coxa.iD,m_Coxa.curr,m_Femur.iD,m_Femur.curr,m_Tibia.iD,m_Tibia.curr,m_Tars.iD,m_Tars.curr);
salco 0:e4151abdff23 73 return buffer;
salco 0:e4151abdff23 74 }
salco 0:e4151abdff23 75 //setting Coxa //
salco 0:e4151abdff23 76 void set_Id_Coxa(char id) {
salco 0:e4151abdff23 77 m_Coxa.iD = id;
salco 0:e4151abdff23 78 }
salco 0:e4151abdff23 79 void set_PulseMax_Coxa(unsigned char value) {
salco 0:e4151abdff23 80 m_Coxa.max = value;
salco 0:e4151abdff23 81 }
salco 0:e4151abdff23 82 void set_PulseMin_Coxa(unsigned char value) {
salco 0:e4151abdff23 83 m_Coxa.min = value;
salco 0:e4151abdff23 84 }
salco 0:e4151abdff23 85 void set_DefaultPulse_Coxa(unsigned char value) {
salco 0:e4151abdff23 86 m_Coxa.basePose = value;
salco 0:e4151abdff23 87 }
salco 0:e4151abdff23 88 char get_Id_Coxa(void) {
salco 0:e4151abdff23 89 return m_Coxa.iD;
salco 0:e4151abdff23 90 }
salco 0:e4151abdff23 91 unsigned char get_PulseMax_Coxa(void) {
salco 0:e4151abdff23 92 return m_Coxa.max;
salco 0:e4151abdff23 93 }
salco 0:e4151abdff23 94 unsigned char get_PulseMin_Coxa(void) {
salco 0:e4151abdff23 95 return m_Coxa.min;
salco 0:e4151abdff23 96 }
salco 0:e4151abdff23 97 unsigned char get_DefaultPulse_Coxa(void) {
salco 0:e4151abdff23 98 return m_Coxa.basePose;
salco 0:e4151abdff23 99 }
salco 0:e4151abdff23 100 unsigned char get_CurrentPulse_Coxa(void) {
salco 0:e4151abdff23 101 return m_Coxa.curr;
salco 0:e4151abdff23 102 }
salco 0:e4151abdff23 103 //setting Femur //
salco 0:e4151abdff23 104 void set_Id_Femur(char id) {
salco 0:e4151abdff23 105 m_Femur.iD = id;
salco 0:e4151abdff23 106 }
salco 0:e4151abdff23 107 void set_PulseMax_Femur(unsigned char value) {
salco 0:e4151abdff23 108 m_Femur.max = value;
salco 0:e4151abdff23 109 }
salco 0:e4151abdff23 110 void set_PulseMin_Femur(unsigned char value) {
salco 0:e4151abdff23 111 m_Femur.min = value;
salco 0:e4151abdff23 112 }
salco 0:e4151abdff23 113 void set_DefaultPulse_Femur(unsigned char value) {
salco 0:e4151abdff23 114 m_Femur.basePose = value;
salco 0:e4151abdff23 115 }
salco 0:e4151abdff23 116 char get_Id_Femur(void) {
salco 0:e4151abdff23 117 return m_Femur.iD;
salco 0:e4151abdff23 118 }
salco 0:e4151abdff23 119 unsigned char get_PulseMax_Femur(void) {
salco 0:e4151abdff23 120 return m_Femur.max;
salco 0:e4151abdff23 121 }
salco 0:e4151abdff23 122 unsigned char get_PulseMin_Femur(void) {
salco 0:e4151abdff23 123 return m_Femur.min;
salco 0:e4151abdff23 124 }
salco 0:e4151abdff23 125 unsigned char get_DefaultPulse_Femur(void) {
salco 0:e4151abdff23 126 return m_Femur.basePose;
salco 0:e4151abdff23 127 }
salco 0:e4151abdff23 128 unsigned char get_CurrentPulse_Femur(void) {
salco 0:e4151abdff23 129 return m_Femur.curr;
salco 0:e4151abdff23 130 }
salco 0:e4151abdff23 131 //setting Tibia //
salco 0:e4151abdff23 132 void set_Id_Tibia(char id) {
salco 0:e4151abdff23 133 m_Tibia.iD = id;
salco 0:e4151abdff23 134 }
salco 0:e4151abdff23 135 void set_PulseMax_Tibia(unsigned char value) {
salco 0:e4151abdff23 136 m_Tibia.max = value;
salco 0:e4151abdff23 137 }
salco 0:e4151abdff23 138 void set_PulseMin_Tibia(unsigned char value) {
salco 0:e4151abdff23 139 m_Tibia.min = value;
salco 0:e4151abdff23 140 }
salco 0:e4151abdff23 141 void set_DefaultPulse_Tibia(unsigned char value) {
salco 0:e4151abdff23 142 m_Tibia.basePose = value;
salco 0:e4151abdff23 143 }
salco 0:e4151abdff23 144 char get_Id_Tibia(void) {
salco 0:e4151abdff23 145 return m_Tibia.iD;
salco 0:e4151abdff23 146 }
salco 0:e4151abdff23 147 unsigned char get_PulseMax_Tibia(void) {
salco 0:e4151abdff23 148 return m_Tibia.max;
salco 0:e4151abdff23 149 }
salco 0:e4151abdff23 150 unsigned char get_PulseMin_Tibia(void) {
salco 0:e4151abdff23 151 return m_Tibia.min;
salco 0:e4151abdff23 152 }
salco 0:e4151abdff23 153 unsigned char get_DefaultPulse_Tibia(void) {
salco 0:e4151abdff23 154 return m_Tibia.basePose;
salco 0:e4151abdff23 155 }
salco 0:e4151abdff23 156 unsigned char get_CurrentPulse_Tibia(void) {
salco 0:e4151abdff23 157 return m_Tibia.curr;
salco 0:e4151abdff23 158 }
salco 0:e4151abdff23 159 //setting Tars //
salco 0:e4151abdff23 160 void set_Id_Tars(char id) {
salco 0:e4151abdff23 161 m_Tars.iD = id;
salco 0:e4151abdff23 162 }
salco 0:e4151abdff23 163 void set_PulseMax_Tars(unsigned char value) {
salco 0:e4151abdff23 164 m_Tars.max = value;
salco 0:e4151abdff23 165 }
salco 0:e4151abdff23 166 void set_PulseMin_Tars(unsigned char value) {
salco 0:e4151abdff23 167 m_Tars.min = value;
salco 0:e4151abdff23 168 }
salco 0:e4151abdff23 169 void set_DefaultPulse_Tars(unsigned char value) {
salco 0:e4151abdff23 170 m_Tars.basePose = value;
salco 0:e4151abdff23 171 }
salco 0:e4151abdff23 172 char get_Id_Tars(void) {
salco 0:e4151abdff23 173 return m_Tars.iD;
salco 0:e4151abdff23 174 }
salco 0:e4151abdff23 175 unsigned char get_PulseMax_Tars(void) {
salco 0:e4151abdff23 176 return m_Tars.max;
salco 0:e4151abdff23 177 }
salco 0:e4151abdff23 178 unsigned char get_PulseMin_Tars(void) {
salco 0:e4151abdff23 179 return m_Tars.min;
salco 0:e4151abdff23 180 }
salco 0:e4151abdff23 181 unsigned char get_DefaultPulse_Tars(void) {
salco 0:e4151abdff23 182 return m_Tars.basePose;
salco 0:e4151abdff23 183 }
salco 0:e4151abdff23 184 unsigned char get_CurrentPulse_Tars(void) {
salco 0:e4151abdff23 185 return m_Tars.curr;
salco 0:e4151abdff23 186 }
salco 0:e4151abdff23 187 //setting All-in-one //
salco 0:e4151abdff23 188 void set_Id(char coxaId,char femurId,char tibiaId,char tarsId) {
salco 0:e4151abdff23 189 m_Coxa.iD = coxaId;
salco 0:e4151abdff23 190 m_Femur.iD= femurId;
salco 0:e4151abdff23 191 m_Tibia.iD= tibiaId;
salco 0:e4151abdff23 192 m_Tars.iD = tarsId;
salco 0:e4151abdff23 193 }
salco 0:e4151abdff23 194 void set_PulseMax(unsigned char coxaValue,unsigned char femurValue,
salco 0:e4151abdff23 195 unsigned char tibiaValue,unsigned char tarsValue) {
salco 0:e4151abdff23 196 m_Coxa.max = coxaValue;
salco 0:e4151abdff23 197 m_Femur.max= femurValue;
salco 0:e4151abdff23 198 m_Tibia.max= tibiaValue;
salco 0:e4151abdff23 199 m_Tars.max = tarsValue;
salco 0:e4151abdff23 200 }
salco 0:e4151abdff23 201 void set_PulseMin(unsigned char coxaValue,unsigned char femurValue,
salco 0:e4151abdff23 202 unsigned char tibiaValue,unsigned char tarsValue) {
salco 0:e4151abdff23 203 m_Coxa.min = coxaValue;
salco 0:e4151abdff23 204 m_Femur.min= femurValue;
salco 0:e4151abdff23 205 m_Tibia.min= tibiaValue;
salco 0:e4151abdff23 206 m_Tars.min = tarsValue;
salco 0:e4151abdff23 207 }
salco 0:e4151abdff23 208 void set_DefaultPulse(unsigned char coxaValue,unsigned char femurValue,
salco 0:e4151abdff23 209 unsigned char tibiaValue,unsigned char tarsValue) {
salco 0:e4151abdff23 210 m_Coxa.basePose = coxaValue;
salco 0:e4151abdff23 211 m_Femur.basePose= femurValue;
salco 0:e4151abdff23 212 m_Tibia.basePose= tibiaValue;
salco 0:e4151abdff23 213 m_Tars.basePose = tarsValue;
salco 0:e4151abdff23 214 }
salco 0:e4151abdff23 215 //////////
salco 0:e4151abdff23 216 // Move //
salco 0:e4151abdff23 217 //////////
salco 0:e4151abdff23 218 void move_Coxa(unsigned char value) {
salco 0:e4151abdff23 219 if((value >= m_Coxa.min)&&(value <= m_Coxa.max ))
salco 0:e4151abdff23 220 m_Coxa.curr = value;
salco 0:e4151abdff23 221 }
salco 0:e4151abdff23 222 void move_Femur(unsigned char value) {
salco 0:e4151abdff23 223 if((value >= m_Femur.min)&&(value <= m_Femur.max ))
salco 0:e4151abdff23 224 m_Femur.curr = value;
salco 0:e4151abdff23 225 }
salco 0:e4151abdff23 226 void move_Tibia(unsigned char value) {
salco 0:e4151abdff23 227 if((value >= m_Tibia.min)&&(value <= m_Tibia.max ))
salco 0:e4151abdff23 228 m_Tibia.curr = value;
salco 0:e4151abdff23 229 }
salco 0:e4151abdff23 230 void move_Tars(unsigned char value) {
salco 0:e4151abdff23 231 if((value >= m_Tars.min)&&(value <= m_Tars.max ))
salco 0:e4151abdff23 232 m_Tars.curr = value;
salco 0:e4151abdff23 233 }
salco 0:e4151abdff23 234 void move(unsigned char coxaValue,unsigned char femurValue,
salco 19:0ac80045ba4c 235 unsigned char tibiaValue,unsigned char tarsValue) {//noob proof
salco 0:e4151abdff23 236 if((coxaValue >= m_Coxa.min)&&(coxaValue <= m_Coxa.max ))
salco 0:e4151abdff23 237 m_Coxa.curr = coxaValue;
salco 0:e4151abdff23 238 if((femurValue >= m_Femur.min)&&(femurValue <= m_Femur.max ))
salco 0:e4151abdff23 239 m_Femur.curr = femurValue;
salco 0:e4151abdff23 240 if((tibiaValue >= m_Tibia.min)&&(tibiaValue <= m_Tibia.max ))
salco 0:e4151abdff23 241 m_Tibia.curr = tibiaValue;
salco 0:e4151abdff23 242 if((tarsValue >= m_Tars.min)&&(tarsValue <= m_Tars.max ))
salco 0:e4151abdff23 243 m_Tars.curr = tarsValue;
salco 0:e4151abdff23 244 }
salco 0:e4151abdff23 245 };
salco 0:e4151abdff23 246 #endif /* PATTE_H_ */