Version 3 pour le majeur et l'index

Dependencies:   mbed

Committer:
MoussOudj
Date:
Thu Jun 21 16:30:39 2018 +0000
Revision:
0:392afd646a4f
Version 3 pour le majeur et l'index

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MoussOudj 0:392afd646a4f 1 #include "mbed.h"
MoussOudj 0:392afd646a4f 2
MoussOudj 0:392afd646a4f 3
MoussOudj 0:392afd646a4f 4
MoussOudj 0:392afd646a4f 5
MoussOudj 0:392afd646a4f 6 Serial pc(USBTX, USBRX); //Initalise PC serial
MoussOudj 0:392afd646a4f 7 Serial xbee(PTE0,PTE1); //Initalise XBEE serial
MoussOudj 0:392afd646a4f 8
MoussOudj 0:392afd646a4f 9 int term = 0;
MoussOudj 0:392afd646a4f 10 int present = 0;
MoussOudj 0:392afd646a4f 11 int acc_x[2];
MoussOudj 0:392afd646a4f 12 int acc_y[2];
MoussOudj 0:392afd646a4f 13 int acc_z[2];
MoussOudj 0:392afd646a4f 14 int i = 0;
MoussOudj 0:392afd646a4f 15 int j = 0;
MoussOudj 0:392afd646a4f 16 char data[21];
MoussOudj 0:392afd646a4f 17 float angleX, angleY, angleZ, total, angleX_old;
MoussOudj 0:392afd646a4f 18 int v = 0;
MoussOudj 0:392afd646a4f 19
MoussOudj 0:392afd646a4f 20 DigitalOut myled(LED1);// creation d'une led
MoussOudj 0:392afd646a4f 21 SPI capteur(PTD2, PTD3, PTD1); // mosi, miso, sclk
MoussOudj 0:392afd646a4f 22 SPI capteur_2(PTD6, PTD7, PTD5); // mosi, miso, sclk
MoussOudj 0:392afd646a4f 23
MoussOudj 0:392afd646a4f 24
MoussOudj 0:392afd646a4f 25
MoussOudj 0:392afd646a4f 26
MoussOudj 0:392afd646a4f 27
MoussOudj 0:392afd646a4f 28 //Phalanges doigt 0
MoussOudj 0:392afd646a4f 29 DigitalOut D0C1(PTA16);// Pouce bout
MoussOudj 0:392afd646a4f 30 DigitalOut D0C2(PTA17);// Pouce milieu
MoussOudj 0:392afd646a4f 31 DigitalOut D0C3(PTE31);// Pouce base
MoussOudj 0:392afd646a4f 32
MoussOudj 0:392afd646a4f 33 //Phalanges doigt 1
MoussOudj 0:392afd646a4f 34 DigitalOut D1C1(PTC13);// Index bout
MoussOudj 0:392afd646a4f 35 DigitalOut D1C2(PTC16);// Index milieu
MoussOudj 0:392afd646a4f 36 DigitalOut D1C3(PTC17);// Index base
MoussOudj 0:392afd646a4f 37
MoussOudj 0:392afd646a4f 38 //Phalanges doigt 2
MoussOudj 0:392afd646a4f 39 DigitalOut D2C1(PTC10);// Majeur bout
MoussOudj 0:392afd646a4f 40 DigitalOut D2C2(PTC11);// Majeur milieu
MoussOudj 0:392afd646a4f 41 DigitalOut D2C3(PTC12);// Majeur base
MoussOudj 0:392afd646a4f 42
MoussOudj 0:392afd646a4f 43 //Phalanges doigt 3
MoussOudj 0:392afd646a4f 44 DigitalOut D3C1(PTC4);// Annulaire bout
MoussOudj 0:392afd646a4f 45 DigitalOut D3C2(PTC5);// Annulaire milieu
MoussOudj 0:392afd646a4f 46 DigitalOut D3C3(PTC6);// Annulaire base
MoussOudj 0:392afd646a4f 47
MoussOudj 0:392afd646a4f 48 //Phalanges doigt 4
MoussOudj 0:392afd646a4f 49 DigitalOut D4C1(PTC7);// Auriculaire bout
MoussOudj 0:392afd646a4f 50 DigitalOut D4C2(PTC0);// Auriculaire milieu
MoussOudj 0:392afd646a4f 51 DigitalOut D4C3(PTC3);// Auriculaire base
MoussOudj 0:392afd646a4f 52
MoussOudj 0:392afd646a4f 53
MoussOudj 0:392afd646a4f 54
MoussOudj 0:392afd646a4f 55 struct S_accel{
MoussOudj 0:392afd646a4f 56 int x;
MoussOudj 0:392afd646a4f 57 int y; // On crée ici deux tableaux de structures qui sont voués à stocker les données de chaque accéléromètre sur les axes x, y et z
MoussOudj 0:392afd646a4f 58 int z;
MoussOudj 0:392afd646a4f 59 DigitalOut *CS;
MoussOudj 0:392afd646a4f 60 }a[15], b[15];
MoussOudj 0:392afd646a4f 61
MoussOudj 0:392afd646a4f 62
MoussOudj 0:392afd646a4f 63
MoussOudj 0:392afd646a4f 64 void Init_Cs(void); //Fonction d'initialisation des Chip Select
MoussOudj 0:392afd646a4f 65 void Write_Register(int cap, int addr, int valeur); //Fonction d'ecriture dans le registre
MoussOudj 0:392afd646a4f 66 void Read_x(int cap); //Fonction lecture x
MoussOudj 0:392afd646a4f 67 void Read_y(int cap); //Fonction lecture y
MoussOudj 0:392afd646a4f 68 void Read_z(int cap); //Fonction lecture z
MoussOudj 0:392afd646a4f 69 void Capteur_present(void); //Fonction verification de la présence capteur
MoussOudj 0:392afd646a4f 70 void lecture(void); //Fonction de lecture des données capteur et envoi xbee
MoussOudj 0:392afd646a4f 71
MoussOudj 0:392afd646a4f 72
MoussOudj 0:392afd646a4f 73 int main()
MoussOudj 0:392afd646a4f 74 {
MoussOudj 0:392afd646a4f 75
MoussOudj 0:392afd646a4f 76 pc.baud(9600); //Initialise le baud à 9600
MoussOudj 0:392afd646a4f 77 xbee.baud(9600);//Initialise le baud à 9600
MoussOudj 0:392afd646a4f 78
MoussOudj 0:392afd646a4f 79 char test;
MoussOudj 0:392afd646a4f 80
MoussOudj 0:392afd646a4f 81 ////////////////////////////// Configuration bus spi //////////////////////////////////////////
MoussOudj 0:392afd646a4f 82
MoussOudj 0:392afd646a4f 83 capteur.format(8,3);// Selection parametre du bus SPI
MoussOudj 0:392afd646a4f 84 capteur.frequency(5000000);// Vitesse du bus SPI
MoussOudj 0:392afd646a4f 85
MoussOudj 0:392afd646a4f 86 capteur_2.format(8,3);// Selection parametre du bus SPI
MoussOudj 0:392afd646a4f 87 capteur_2.frequency(5000000);// Vitesse du bus SPI
MoussOudj 0:392afd646a4f 88
MoussOudj 0:392afd646a4f 89 ////////////////////////////// Configuration bus spi //////////////////////////////////////////
MoussOudj 0:392afd646a4f 90
MoussOudj 0:392afd646a4f 91 Init_Cs();// Assignation des chip select
MoussOudj 0:392afd646a4f 92
MoussOudj 0:392afd646a4f 93
MoussOudj 0:392afd646a4f 94 ////////////////////////////// Configuration capteurs //////////////////////////////////////////
MoussOudj 0:392afd646a4f 95
MoussOudj 0:392afd646a4f 96 Capteur_present();// Verification presence capteurs
MoussOudj 0:392afd646a4f 97
MoussOudj 0:392afd646a4f 98 for (i=0;i <= 5;i++){// Mise en marche capteurs
MoussOudj 0:392afd646a4f 99 Write_Register(i, 0x20, 0x67);// registre CTRL_REG1_A AODR = 10Hz
MoussOudj 0:392afd646a4f 100 }
MoussOudj 0:392afd646a4f 101
MoussOudj 0:392afd646a4f 102 for (i=6;i <= 14;i++){// Mise en marche capteurs
MoussOudj 0:392afd646a4f 103 Write_Register(i, 0x20, 0x67);// registre CTRL_REG1_A AODR = 10Hz
MoussOudj 0:392afd646a4f 104 }
MoussOudj 0:392afd646a4f 105
MoussOudj 0:392afd646a4f 106 ////////////////////////////// Configuration capteurs //////////////////////////////////////////
MoussOudj 0:392afd646a4f 107
MoussOudj 0:392afd646a4f 108
MoussOudj 0:392afd646a4f 109
MoussOudj 0:392afd646a4f 110 while(1)
MoussOudj 0:392afd646a4f 111 {
MoussOudj 0:392afd646a4f 112
MoussOudj 0:392afd646a4f 113 if(xbee.readable()==1) //Si un caractère peut être lu
MoussOudj 0:392afd646a4f 114 {
MoussOudj 0:392afd646a4f 115
MoussOudj 0:392afd646a4f 116 test = xbee.getc(); //la variable test prend la valeur du caractère
MoussOudj 0:392afd646a4f 117
MoussOudj 0:392afd646a4f 118
MoussOudj 0:392afd646a4f 119 if(test=='D') //Si le caractère reçu est égal à D
MoussOudj 0:392afd646a4f 120 {
MoussOudj 0:392afd646a4f 121
MoussOudj 0:392afd646a4f 122
MoussOudj 0:392afd646a4f 123 lecture(); //Alors faire appeler la fonction lecture
MoussOudj 0:392afd646a4f 124
MoussOudj 0:392afd646a4f 125 wait_ms(5);
MoussOudj 0:392afd646a4f 126
MoussOudj 0:392afd646a4f 127 }
MoussOudj 0:392afd646a4f 128
MoussOudj 0:392afd646a4f 129
MoussOudj 0:392afd646a4f 130
MoussOudj 0:392afd646a4f 131
MoussOudj 0:392afd646a4f 132 }
MoussOudj 0:392afd646a4f 133
MoussOudj 0:392afd646a4f 134 }
MoussOudj 0:392afd646a4f 135 }
MoussOudj 0:392afd646a4f 136
MoussOudj 0:392afd646a4f 137
MoussOudj 0:392afd646a4f 138
MoussOudj 0:392afd646a4f 139 void Init_Cs(void){ // Fonction d'initialisation des chip select
MoussOudj 0:392afd646a4f 140 //Phalanges doigt 0
MoussOudj 0:392afd646a4f 141 a[0].CS = &D0C1;
MoussOudj 0:392afd646a4f 142 a[1].CS = &D0C2;
MoussOudj 0:392afd646a4f 143 a[2].CS = &D0C3;
MoussOudj 0:392afd646a4f 144
MoussOudj 0:392afd646a4f 145 //Phalanges doigt 1
MoussOudj 0:392afd646a4f 146 a[3].CS = &D1C1;
MoussOudj 0:392afd646a4f 147 a[4].CS = &D1C2;
MoussOudj 0:392afd646a4f 148 a[5].CS = &D1C3;
MoussOudj 0:392afd646a4f 149
MoussOudj 0:392afd646a4f 150 //Phalanges doigt 2
MoussOudj 0:392afd646a4f 151 a[6].CS = &D2C1;
MoussOudj 0:392afd646a4f 152 a[7].CS = &D2C2;
MoussOudj 0:392afd646a4f 153 a[8].CS = &D2C3;
MoussOudj 0:392afd646a4f 154
MoussOudj 0:392afd646a4f 155 //Phalanges doigt 3
MoussOudj 0:392afd646a4f 156 a[9].CS = &D3C1;
MoussOudj 0:392afd646a4f 157 a[10].CS = &D3C2;
MoussOudj 0:392afd646a4f 158 a[11].CS = &D3C3;
MoussOudj 0:392afd646a4f 159
MoussOudj 0:392afd646a4f 160 //Phalanges doigt 4
MoussOudj 0:392afd646a4f 161 a[12].CS = &D4C1;
MoussOudj 0:392afd646a4f 162 a[13].CS = &D4C2;
MoussOudj 0:392afd646a4f 163 a[14].CS = &D4C3;
MoussOudj 0:392afd646a4f 164
MoussOudj 0:392afd646a4f 165 for (i=0;i <= 14;i++){// Tous les Chip Select a 1
MoussOudj 0:392afd646a4f 166 *(a[i].CS) = 1;
MoussOudj 0:392afd646a4f 167 }
MoussOudj 0:392afd646a4f 168 }
MoussOudj 0:392afd646a4f 169
MoussOudj 0:392afd646a4f 170
MoussOudj 0:392afd646a4f 171 void Write_Register(int cap, int addr, int valeur){ // Mise en marche des accéléromètres en écrivant dans le registre
MoussOudj 0:392afd646a4f 172
MoussOudj 0:392afd646a4f 173 //Ecriture dans un registre
MoussOudj 0:392afd646a4f 174 if(cap <=5){
MoussOudj 0:392afd646a4f 175 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 176 valeur = (1<<8)+ valeur;
MoussOudj 0:392afd646a4f 177 capteur_2.write(addr);
MoussOudj 0:392afd646a4f 178 capteur_2.write(valeur);
MoussOudj 0:392afd646a4f 179 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 180 }else{
MoussOudj 0:392afd646a4f 181 //Ecriture dans un registre
MoussOudj 0:392afd646a4f 182 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 183 valeur = (1<<8)+ valeur;
MoussOudj 0:392afd646a4f 184 capteur.write(addr);
MoussOudj 0:392afd646a4f 185 capteur.write(valeur);
MoussOudj 0:392afd646a4f 186 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 187 }
MoussOudj 0:392afd646a4f 188 }
MoussOudj 0:392afd646a4f 189
MoussOudj 0:392afd646a4f 190
MoussOudj 0:392afd646a4f 191 int Read_Register(int cap, int addr){
MoussOudj 0:392afd646a4f 192 int addr_2;
MoussOudj 0:392afd646a4f 193 // Lecture d'un registre et affichage sur port comm
MoussOudj 0:392afd646a4f 194 if(cap <=5){
MoussOudj 0:392afd646a4f 195 addr_2 = (8<<4) + addr;
MoussOudj 0:392afd646a4f 196 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 197 capteur_2.write(addr_2);
MoussOudj 0:392afd646a4f 198 term = capteur_2.write(0x00);
MoussOudj 0:392afd646a4f 199 printf("Registre = 0x%X\r\n", term);
MoussOudj 0:392afd646a4f 200 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 201 return term;
MoussOudj 0:392afd646a4f 202 }else{
MoussOudj 0:392afd646a4f 203 addr_2 = (8<<4) + addr;
MoussOudj 0:392afd646a4f 204 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 205 capteur.write(addr_2);
MoussOudj 0:392afd646a4f 206 term = capteur.write(0x00);
MoussOudj 0:392afd646a4f 207 printf("Registre = 0x%X\r\n", term);
MoussOudj 0:392afd646a4f 208 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 209 return term;
MoussOudj 0:392afd646a4f 210 }
MoussOudj 0:392afd646a4f 211 }
MoussOudj 0:392afd646a4f 212
MoussOudj 0:392afd646a4f 213
MoussOudj 0:392afd646a4f 214 void Read_x(int cap){ // Lecture des données de l'accéléromètre sur l'axe x
MoussOudj 0:392afd646a4f 215 if(cap <=5){
MoussOudj 0:392afd646a4f 216 *(a[cap].CS) = 0; // On active le Chip Select de la voie
MoussOudj 0:392afd646a4f 217 capteur_2.write(0xA8);
MoussOudj 0:392afd646a4f 218 acc_x[0]= capteur_2.write(0x00);
MoussOudj 0:392afd646a4f 219 //printf("X_L = 0x%X\r\n", acc_x[0]); //Affichacge LSB axe X
MoussOudj 0:392afd646a4f 220 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 221
MoussOudj 0:392afd646a4f 222 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 223 capteur_2.write(0xA9);
MoussOudj 0:392afd646a4f 224 acc_x[1] = capteur_2.write(0x00);
MoussOudj 0:392afd646a4f 225 //printf("X_H = 0x%X\r\n", acc_x[1]); // Affichage MSB axe X
MoussOudj 0:392afd646a4f 226 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 227
MoussOudj 0:392afd646a4f 228 a[cap].x = ((acc_x[1] <<8) | acc_x[0]); // Mise en forme valeur
MoussOudj 0:392afd646a4f 229 //printf("X = 0x%d\r\n", a[cap].x); // Affichage valeur axe x
MoussOudj 0:392afd646a4f 230 }else{
MoussOudj 0:392afd646a4f 231 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 232 capteur.write(0xA8);
MoussOudj 0:392afd646a4f 233 acc_x[0]= capteur.write(0x00);
MoussOudj 0:392afd646a4f 234 //printf("X_L = 0x%X\r\n", acc_x[0]); //Affichacge LSB axe X
MoussOudj 0:392afd646a4f 235 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 236
MoussOudj 0:392afd646a4f 237 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 238 capteur.write(0xA9);
MoussOudj 0:392afd646a4f 239 acc_x[1] = capteur.write(0x00);
MoussOudj 0:392afd646a4f 240 //printf("X_H = 0x%X\r\n", acc_x[1]); // Affichage MSB axe X
MoussOudj 0:392afd646a4f 241 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 242
MoussOudj 0:392afd646a4f 243 a[cap].x = (acc_x[1] <<8)+ acc_x[0]; // Mise en forme valeur
MoussOudj 0:392afd646a4f 244 //printf("X = %d\r\n", a[cap].x); // Affichage valeur axe x
MoussOudj 0:392afd646a4f 245 }
MoussOudj 0:392afd646a4f 246 }
MoussOudj 0:392afd646a4f 247
MoussOudj 0:392afd646a4f 248
MoussOudj 0:392afd646a4f 249 void Read_y(int cap){ // Lecture des données de l'accéléromètres sur l'axe y
MoussOudj 0:392afd646a4f 250 if(cap <=5){
MoussOudj 0:392afd646a4f 251 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 252 capteur_2.write(0xAA);
MoussOudj 0:392afd646a4f 253 acc_y[0]= capteur_2.write(0x00);
MoussOudj 0:392afd646a4f 254 //printf("Y_L = 0x%X\r\n", acc_y[0]); //Affichacge LSB axe Y
MoussOudj 0:392afd646a4f 255 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 256
MoussOudj 0:392afd646a4f 257 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 258 capteur_2.write(0xAB);
MoussOudj 0:392afd646a4f 259 acc_y[1] = capteur_2.write(0x00);
MoussOudj 0:392afd646a4f 260 //printf("Y_H = 0x%X\r\n", acc_y[1]); // Affichage MSB axe Y
MoussOudj 0:392afd646a4f 261 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 262
MoussOudj 0:392afd646a4f 263 a[cap].y = (acc_y[1] <<8)+ acc_y[cap]; // Mise en forme valeur
MoussOudj 0:392afd646a4f 264 //printf("Y = 0x%X\r\n", a[0].y); // Affichage valeur axe Y
MoussOudj 0:392afd646a4f 265 }
MoussOudj 0:392afd646a4f 266 else
MoussOudj 0:392afd646a4f 267 {
MoussOudj 0:392afd646a4f 268 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 269 capteur.write(0xAA);
MoussOudj 0:392afd646a4f 270 acc_y[0]= capteur.write(0x00);
MoussOudj 0:392afd646a4f 271 //printf("Y_L = 0x%X\r\n", acc_y[0]); //Affichacge LSB axe Y
MoussOudj 0:392afd646a4f 272 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 273
MoussOudj 0:392afd646a4f 274 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 275 capteur.write(0xAB);
MoussOudj 0:392afd646a4f 276 acc_y[1] = capteur.write(0x00);
MoussOudj 0:392afd646a4f 277 //printf("Y_H = 0x%X\r\n", acc_y[1]); // Affichage MSB axe Y
MoussOudj 0:392afd646a4f 278 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 279
MoussOudj 0:392afd646a4f 280 a[cap].y = (acc_y[1] <<8)+ acc_y[cap]; // Mise en forme valeur
MoussOudj 0:392afd646a4f 281 //printf("Y = 0x%X\r\n", a[0].y); // Affichage valeur axe Y
MoussOudj 0:392afd646a4f 282 }
MoussOudj 0:392afd646a4f 283 }
MoussOudj 0:392afd646a4f 284
MoussOudj 0:392afd646a4f 285
MoussOudj 0:392afd646a4f 286 void Read_z(int cap){ // Lecture des données de l'accéléromètre sur l'axe z
MoussOudj 0:392afd646a4f 287 if(cap <=5){
MoussOudj 0:392afd646a4f 288 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 289 capteur_2.write(0xAC);
MoussOudj 0:392afd646a4f 290 acc_z[0]= capteur_2.write(0x00);
MoussOudj 0:392afd646a4f 291 //printf("Z_L = 0x%X\r\n", acc_z[0]); //Affichacge LSB axe Z
MoussOudj 0:392afd646a4f 292 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 293
MoussOudj 0:392afd646a4f 294 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 295 capteur_2.write(0xAD);
MoussOudj 0:392afd646a4f 296 acc_z[1] = capteur_2.write(0x00);
MoussOudj 0:392afd646a4f 297 //printf("Z_H = 0x%X\r\n", acc_z[1]); // Affichage MSB axe Z
MoussOudj 0:392afd646a4f 298 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 299
MoussOudj 0:392afd646a4f 300 a[cap].z = (acc_z[1] <<8)+ acc_z[0]; // Mise en forme valeur
MoussOudj 0:392afd646a4f 301 //printf("Z = 0x%X\r\n", a[cap].z); // Affichage valeur axe Z
MoussOudj 0:392afd646a4f 302 }
MoussOudj 0:392afd646a4f 303 else
MoussOudj 0:392afd646a4f 304 {
MoussOudj 0:392afd646a4f 305 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 306 capteur.write(0xAC);
MoussOudj 0:392afd646a4f 307 acc_z[0]= capteur.write(0x00);
MoussOudj 0:392afd646a4f 308 //printf("Z_L = 0x%X\r\n", acc_z[0]); //Affichacge LSB axe Z
MoussOudj 0:392afd646a4f 309 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 310
MoussOudj 0:392afd646a4f 311 *(a[cap].CS) = 0;
MoussOudj 0:392afd646a4f 312 capteur.write(0xAD);
MoussOudj 0:392afd646a4f 313 acc_z[1] = capteur.write(0x00);
MoussOudj 0:392afd646a4f 314 //printf("Z_H = 0x%X\r\n", acc_z[1]); // Affichage MSB axe Z
MoussOudj 0:392afd646a4f 315 *(a[cap].CS) = 1;
MoussOudj 0:392afd646a4f 316
MoussOudj 0:392afd646a4f 317 a[cap].z = (acc_z[1] <<8)+ acc_z[0]; // Mise en forme valeur
MoussOudj 0:392afd646a4f 318 //printf("Z = 0x%X\r\n", a[cap].z); // Affichage valeur axe Z
MoussOudj 0:392afd646a4f 319 }
MoussOudj 0:392afd646a4f 320 }
MoussOudj 0:392afd646a4f 321
MoussOudj 0:392afd646a4f 322
MoussOudj 0:392afd646a4f 323 void Capteur_present(void){// verification presence capteurs
MoussOudj 0:392afd646a4f 324 i = 0;
MoussOudj 0:392afd646a4f 325 for (i=0;i <= 5;i++){ // Pour les 6 premiers capteurs
MoussOudj 0:392afd646a4f 326 present = Read_Register(i, 0x0F);
MoussOudj 0:392afd646a4f 327 if( present == 0b01001001){
MoussOudj 0:392afd646a4f 328 printf("capteur_1 %X = OK\r\n", i);
MoussOudj 0:392afd646a4f 329 } else{
MoussOudj 0:392afd646a4f 330 printf("capteur_1 %X = Error\r\n", i);
MoussOudj 0:392afd646a4f 331 }
MoussOudj 0:392afd646a4f 332 }
MoussOudj 0:392afd646a4f 333 for (i=6;i <= 14;i++){ // Pour les 8 derniers capteurs
MoussOudj 0:392afd646a4f 334 present = Read_Register(i, 0x0F);
MoussOudj 0:392afd646a4f 335 if( present == 0b01001001){
MoussOudj 0:392afd646a4f 336 printf("capteur_2 %X = OK\r\n", i);
MoussOudj 0:392afd646a4f 337 } else{
MoussOudj 0:392afd646a4f 338 printf("capteur_2 %X = Error\r\n", i);
MoussOudj 0:392afd646a4f 339 }
MoussOudj 0:392afd646a4f 340 }
MoussOudj 0:392afd646a4f 341 }
MoussOudj 0:392afd646a4f 342
MoussOudj 0:392afd646a4f 343
MoussOudj 0:392afd646a4f 344 void lecture(void){ // traitement des données précédemment récupérées
MoussOudj 0:392afd646a4f 345
MoussOudj 0:392afd646a4f 346 for(i=0;i <= 14;i++){ // Pour tous les capteurs, de 0 à 15
MoussOudj 0:392afd646a4f 347 // Lecture des axes
MoussOudj 0:392afd646a4f 348 Read_x(i); // On appelle la fonction pour lire l'axe x
MoussOudj 0:392afd646a4f 349 Read_y(i); // On appelle la fonction pour lire l'axe y
MoussOudj 0:392afd646a4f 350 Read_z(i); // On appelle la fonction pour lire l'axe z
MoussOudj 0:392afd646a4f 351
MoussOudj 0:392afd646a4f 352 a[i].x = (a[i].x + 32768)/2; // mise en forme des données
MoussOudj 0:392afd646a4f 353 a[i].y = (a[i].y + 32768)/2;
MoussOudj 0:392afd646a4f 354 a[i].z = (a[i].z + 32768)/2;
MoussOudj 0:392afd646a4f 355
MoussOudj 0:392afd646a4f 356 a[i].x = a[i].x /100;
MoussOudj 0:392afd646a4f 357
MoussOudj 0:392afd646a4f 358
MoussOudj 0:392afd646a4f 359
MoussOudj 0:392afd646a4f 360 if(a[i].x >= 240) // On borne les données pour éviter au maximum les débordements et les données fantaisistes
MoussOudj 0:392afd646a4f 361 {
MoussOudj 0:392afd646a4f 362 a[i].x = 240;
MoussOudj 0:392afd646a4f 363 }
MoussOudj 0:392afd646a4f 364 if(a[i].x <= 180)
MoussOudj 0:392afd646a4f 365 {
MoussOudj 0:392afd646a4f 366 a[i].x = 180;
MoussOudj 0:392afd646a4f 367 }
MoussOudj 0:392afd646a4f 368
MoussOudj 0:392afd646a4f 369 a[i].x = 180 - (a[i].x);
MoussOudj 0:392afd646a4f 370 a[i].x = -(a[i].x * 2);
MoussOudj 0:392afd646a4f 371
MoussOudj 0:392afd646a4f 372
MoussOudj 0:392afd646a4f 373 data[i] = a[i].x;
MoussOudj 0:392afd646a4f 374
MoussOudj 0:392afd646a4f 375
MoussOudj 0:392afd646a4f 376
MoussOudj 0:392afd646a4f 377 }
MoussOudj 0:392afd646a4f 378
MoussOudj 0:392afd646a4f 379
MoussOudj 0:392afd646a4f 380
MoussOudj 0:392afd646a4f 381 for(i=3;i<6;i++){
MoussOudj 0:392afd646a4f 382 xbee.printf("%c", data[i]);
MoussOudj 0:392afd646a4f 383
MoussOudj 0:392afd646a4f 384 }
MoussOudj 0:392afd646a4f 385
MoussOudj 0:392afd646a4f 386
MoussOudj 0:392afd646a4f 387 for(i=6;i<9;i++){
MoussOudj 0:392afd646a4f 388 xbee.printf("%c", data[i]);
MoussOudj 0:392afd646a4f 389 }
MoussOudj 0:392afd646a4f 390
MoussOudj 0:392afd646a4f 391 }
MoussOudj 0:392afd646a4f 392
MoussOudj 0:392afd646a4f 393
MoussOudj 0:392afd646a4f 394
MoussOudj 0:392afd646a4f 395
MoussOudj 0:392afd646a4f 396
MoussOudj 0:392afd646a4f 397
MoussOudj 0:392afd646a4f 398
MoussOudj 0:392afd646a4f 399
MoussOudj 0:392afd646a4f 400
MoussOudj 0:392afd646a4f 401
MoussOudj 0:392afd646a4f 402
MoussOudj 0:392afd646a4f 403
MoussOudj 0:392afd646a4f 404
MoussOudj 0:392afd646a4f 405