Send char with xbee

Dependencies:   mbed

Committer:
MoussOudj
Date:
Wed Jun 20 20:10:22 2018 +0000
Revision:
0:65d87ed528a1
XBEE_SEND_V2_20/06/2018

Who changed what in which revision?

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