this program is designed for the CHITISAT's OBC, and is a prototype for the flight plan vs altitude

Dependencies:   ADS1015 BMP280 SDFileSystem SENSOR mbed

Committer:
FannyCalle
Date:
Fri Aug 17 17:58:25 2018 +0000
Revision:
5:05fd6249c21b
Parent:
4:c2bdc2bced76
this program is designed for the CHITISAT's OBC, and is a prototype for the flight plan vs altitude.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FannyCalle 1:a147ca4f8fa0 1 /*Programa principal del computador a bordo del cubesat "CHITISAT"
FannyCalle 0:642a7818292a 2 */
FannyCalle 0:642a7818292a 3 //***********************************************************************
FannyCalle 0:642a7818292a 4 #include "mbed.h"
FannyCalle 0:642a7818292a 5 #include "Adafruit_ADS1015.h"
FannyCalle 0:642a7818292a 6 #include "SDFileSystem.h"
FannyCalle 0:642a7818292a 7 #include "BMP280.h"
FannyCalle 0:642a7818292a 8 #include "MPU6050.h"
FannyCalle 0:642a7818292a 9 //#include "HMC5883L.h"
FannyCalle 0:642a7818292a 10 #include "SENSOR.h"
FannyCalle 0:642a7818292a 11 //***** declaracion de puertos
FannyCalle 0:642a7818292a 12 SDFileSystem sd(PA_12, PA_6, PA_1, PB_0 , "sd");// puerto SPI para el Storage
FannyCalle 0:642a7818292a 13 Serial sc(PB_6, PB_7,9600); //puerto para el sistema de comunicacioness
FannyCalle 0:642a7818292a 14 //I2C i2c(PB_4,PA_7); // puerto i2c
FannyCalle 0:642a7818292a 15 BMP280 bmp(i2c,0xEC); //Default address = 0x76
FannyCalle 0:642a7818292a 16 Adafruit_ADS1115 ads(&i2c); // adc de 16 bits
FannyCalle 0:642a7818292a 17 Serial obc(USBTX,USBRX); // puerto virtual del obc
FannyCalle 0:642a7818292a 18 SENSOR uv(PB_4,PA_7); //sensor de rayos ultra violeta
FannyCalle 4:c2bdc2bced76 19 SENSOR mag(PB_4,PA_7); // magnetometro
FannyCalle 0:642a7818292a 20 AnalogIn temp2(PA_5); //sensor de temperatura externa
FannyCalle 0:642a7818292a 21 AnalogIn voltaje(PA_4); //sensor analogico de voltaje
FannyCalle 0:642a7818292a 22 AnalogIn corriente(PA_3); // sensor analogico de corriente
FannyCalle 0:642a7818292a 23 AnalogIn temp3(ADC_TEMP); //sensor de temperatura del arm
FannyCalle 0:642a7818292a 24 DigitalOut Vcondicional(PA_8); //encendido de los sensores(logica negada)
FannyCalle 1:a147ca4f8fa0 25 DigitalOut camera(PB_5);
FannyCalle 0:642a7818292a 26 DigitalOut led(PB_3);
FannyCalle 0:642a7818292a 27 MPU6050 mpu6050;
FannyCalle 0:642a7818292a 28 Timer t;
FannyCalle 0:642a7818292a 29 //***** declaracionde funciones
FannyCalle 0:642a7818292a 30 void take_tl(void);
FannyCalle 0:642a7818292a 31 void take_mision(void);
FannyCalle 0:642a7818292a 32 void save_tl(void);
FannyCalle 0:642a7818292a 33 void save_mision(void);
FannyCalle 0:642a7818292a 34 void build_tr1(void);
FannyCalle 0:642a7818292a 35 void build_tr2(void);
FannyCalle 0:642a7818292a 36 void send_tr(void);
FannyCalle 0:642a7818292a 37 float procesing_h(void);
FannyCalle 0:642a7818292a 38 int condiciones_iniciales(void);
FannyCalle 0:642a7818292a 39 void filtro_pasa_bajos(void);
FannyCalle 0:642a7818292a 40 float get_altura(void);
FannyCalle 0:642a7818292a 41 int guardar(int);
FannyCalle 5:05fd6249c21b 42 void prog_camara(void);
FannyCalle 0:642a7818292a 43 //declaracion de constntes
FannyCalle 0:642a7818292a 44 #define enc 0xA0 //'160'
FannyCalle 0:642a7818292a 45 #define stby 0xA1 //'161'
FannyCalle 0:642a7818292a 46 #define sos 0xEE //'238'
FannyCalle 0:642a7818292a 47 #define com 0xC0 //'192'
FannyCalle 0:642a7818292a 48 #define nak 0xC1 //193
FannyCalle 0:642a7818292a 49 #define tc 0xC2 //194
FannyCalle 0:642a7818292a 50 #define data1 0xD1
FannyCalle 0:642a7818292a 51 #define data2 0xD2
FannyCalle 0:642a7818292a 52 #define data3 0xD3
FannyCalle 0:642a7818292a 53 //*********************
FannyCalle 0:642a7818292a 54 #define estado = '0xf'; //aun no se para que lo usare
FannyCalle 0:642a7818292a 55 //*********************
FannyCalle 0:642a7818292a 56 //declaracion de variables globales
FannyCalle 0:642a7818292a 57 //*************************
FannyCalle 0:642a7818292a 58 uint8_t trama[31];
FannyCalle 0:642a7818292a 59 uint16_t IMU[9]; // magenotometro*3, acelerometro*3, giroscopio*3
FannyCalle 0:642a7818292a 60 float imu[9]; // magenotometro*3, acelerometro*3, giroscopio*3
FannyCalle 0:642a7818292a 61 uint32_t bar; float press=0;
FannyCalle 0:642a7818292a 62 uint16_t tem[2],temp[2]; //temperatura interna i externa del cubesast tomadas por i2c
FannyCalle 0:642a7818292a 63 uint16_t sen_adc[4]; // sensor temperatura de la placa, sensor de corriente, voltaje, ultravioleta
FannyCalle 0:642a7818292a 64 uint16_t sensor_adc[4]; // para la toma de datos analogicos
FannyCalle 0:642a7818292a 65 uint16_t suv;
FannyCalle 0:642a7818292a 66 uint16_t senfis[4]; //sensor de los fisicos
FannyCalle 0:642a7818292a 67 volatile uint8_t menc=nak; // mensaje manipulado por comunicaciones
FannyCalle 0:642a7818292a 68 //*********************************************
FannyCalle 0:642a7818292a 69 //nuevos valores de datos, aun por revisar
FannyCalle 0:642a7818292a 70 char file[]="/sd/prueba1/drop0.txt";
FannyCalle 0:642a7818292a 71 char dato[]="/sd/condiciones/iniciales0.txt";
FannyCalle 0:642a7818292a 72 float BMPTemp = 0;
FannyCalle 0:642a7818292a 73 //float altura1,altura0,h;
FannyCalle 0:642a7818292a 74 float P, Pi, Pa;
FannyCalle 0:642a7818292a 75 float Pp[100];
FannyCalle 0:642a7818292a 76 int BR=0; //bandera de reset
FannyCalle 0:642a7818292a 77 float RS[16]; //registro de sensores
FannyCalle 0:642a7818292a 78 int ND ;
FannyCalle 0:642a7818292a 79 float h,altura1;
FannyCalle 0:642a7818292a 80 float P0;
FannyCalle 0:642a7818292a 81 float dif;
FannyCalle 0:642a7818292a 82 //*********************************************
FannyCalle 5:05fd6249c21b 83 //**********interrupcion activada por el rx de sistema de comunicaciones(sc)
FannyCalle 0:642a7818292a 84 void callback(){
FannyCalle 0:642a7818292a 85 uint8_t menr=sc.getc();
FannyCalle 0:642a7818292a 86 if(menr==nak || menr==tc ||menr==com){ //condicional para solo reconocer 3 comandos que puede llegar del sc
FannyCalle 0:642a7818292a 87 menc=menr; //si llegara otra cosa no cambiaria menc y no habria conflicto en los loops
FannyCalle 0:642a7818292a 88 }
FannyCalle 0:642a7818292a 89 obc.printf("resep: %d",menc);// borrar esto
FannyCalle 0:642a7818292a 90 }
FannyCalle 0:642a7818292a 91 //**********principal
FannyCalle 0:642a7818292a 92 int main()
FannyCalle 0:642a7818292a 93 {
FannyCalle 0:642a7818292a 94 t.reset();
FannyCalle 0:642a7818292a 95 t.start();
FannyCalle 0:642a7818292a 96 //******* inicio
FannyCalle 0:642a7818292a 97 obc.printf("iniciando sensores:\n");
FannyCalle 0:642a7818292a 98 //encenciendo sensores
FannyCalle 5:05fd6249c21b 99 //wait(2);
FannyCalle 0:642a7818292a 100 Vcondicional=0;
FannyCalle 0:642a7818292a 101 //iniciando camara
FannyCalle 5:05fd6249c21b 102 prog_camara();
FannyCalle 0:642a7818292a 103 obc.printf("iniciando camara\n\r");
FannyCalle 0:642a7818292a 104 //******* condiciones iniciales
FannyCalle 0:642a7818292a 105 obc.printf("iniciando sistema");
FannyCalle 0:642a7818292a 106 mkdir("/sd/prueba1", 0777); //
FannyCalle 0:642a7818292a 107 //LEER LA BANDERA DE STADO DEL SISTEMA BR
FannyCalle 0:642a7818292a 108 FILE *fp=fopen("/sd/condiciones/ci.txt","r");
FannyCalle 0:642a7818292a 109 if(fp==NULL){printf("no se pudo acceder al sd 1..");
FannyCalle 0:642a7818292a 110 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 111 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 112 fscanf(fp,"%d",&BR); ///*************************************8revisar
FannyCalle 0:642a7818292a 113 fclose(fp);
FannyCalle 0:642a7818292a 114 int tipo=condiciones_iniciales();
FannyCalle 0:642a7818292a 115 RS[10]= guardar(tipo);
FannyCalle 0:642a7818292a 116 P0=Pi;
FannyCalle 0:642a7818292a 117 dif=0;
FannyCalle 0:642a7818292a 118 float h=get_altura();
FannyCalle 0:642a7818292a 119 tipo=2;
FannyCalle 0:642a7818292a 120 RS[11]= guardar(tipo);
FannyCalle 0:642a7818292a 121 led=1;
FannyCalle 0:642a7818292a 122 //iniciando sistema de comunicaciones
FannyCalle 0:642a7818292a 123 for(int i=0;i<=10;i++){
FannyCalle 0:642a7818292a 124 sc.putc(enc);
FannyCalle 0:642a7818292a 125 led=!led;
FannyCalle 0:642a7818292a 126 obc.printf("encendido: %d\n",enc);
FannyCalle 0:642a7818292a 127 wait(0.3);
FannyCalle 0:642a7818292a 128 }
FannyCalle 0:642a7818292a 129 //******* FULL MODE
FannyCalle 0:642a7818292a 130 sc.attach(&callback);
FannyCalle 0:642a7818292a 131 //prueba***********
FannyCalle 0:642a7818292a 132 //int alt=50;
FannyCalle 0:642a7818292a 133 //int altura=10;
FannyCalle 0:642a7818292a 134 //*****************
FannyCalle 0:642a7818292a 135 //float x=0.5;
FannyCalle 4:c2bdc2bced76 136 float hmin=0.5;
FannyCalle 4:c2bdc2bced76 137 float hsil;
FannyCalle 4:c2bdc2bced76 138 hsil=hmin-0.1;
FannyCalle 4:c2bdc2bced76 139 while(h<hsil){
FannyCalle 0:642a7818292a 140 obc.printf("subiendo en silencio radial altura=%f\n\r",h);
FannyCalle 0:642a7818292a 141 h=get_altura();
FannyCalle 0:642a7818292a 142 led=!led;
FannyCalle 0:642a7818292a 143 }
FannyCalle 0:642a7818292a 144 led=1;wait_ms(20);led=0;
FannyCalle 0:642a7818292a 145 while(h>=hmin){
FannyCalle 0:642a7818292a 146 //while(alt>=5){
FannyCalle 0:642a7818292a 147 if (menc==com){
FannyCalle 0:642a7818292a 148 while(menc!=nak && h>=hmin){
FannyCalle 0:642a7818292a 149 if(menc==tc){
FannyCalle 0:642a7818292a 150 while(menc==tc && h>=hmin){//si no hay mensaje nuevo se mantiene en MM hasta que llegue unno
FannyCalle 0:642a7818292a 151 take_tl();
FannyCalle 0:642a7818292a 152 take_mision();
FannyCalle 0:642a7818292a 153 h=get_altura();
FannyCalle 0:642a7818292a 154 save_tl();
FannyCalle 1:a147ca4f8fa0 155 build_tr2();
FannyCalle 1:a147ca4f8fa0 156 tipo=3;
FannyCalle 0:642a7818292a 157 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 158 save_mision();
FannyCalle 0:642a7818292a 159 send_tr();
FannyCalle 0:642a7818292a 160 obc.printf("altura minima con tc1 %f\n",h);
FannyCalle 0:642a7818292a 161 }
FannyCalle 0:642a7818292a 162 }
FannyCalle 0:642a7818292a 163 else{
FannyCalle 0:642a7818292a 164 while(menc==com && h>=hmin){//si no hay mensaje nuevo se mantiene en STM hasta que llegue unno
FannyCalle 0:642a7818292a 165 take_tl();
FannyCalle 0:642a7818292a 166 h=get_altura();
FannyCalle 0:642a7818292a 167 save_tl();
FannyCalle 1:a147ca4f8fa0 168 build_tr1();
FannyCalle 1:a147ca4f8fa0 169 tipo=3;
FannyCalle 0:642a7818292a 170 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 171 send_tr();
FannyCalle 0:642a7818292a 172 obc.printf("altura minima con tc %f\n",h);
FannyCalle 0:642a7818292a 173 }
FannyCalle 0:642a7818292a 174 }
FannyCalle 0:642a7818292a 175 }
FannyCalle 0:642a7818292a 176 }
FannyCalle 0:642a7818292a 177 else{
FannyCalle 0:642a7818292a 178 while (menc==nak && h>=hmin){// si no hay mensaje nuevo se mantiene en SIM hasta que llegue unno
FannyCalle 0:642a7818292a 179 h=get_altura();
FannyCalle 0:642a7818292a 180 take_tl();
FannyCalle 0:642a7818292a 181 take_mision();
FannyCalle 0:642a7818292a 182 save_tl();
FannyCalle 0:642a7818292a 183 tipo=2;
FannyCalle 0:642a7818292a 184 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 185 save_mision();
FannyCalle 0:642a7818292a 186 obc.printf("alt=%f\n",h);
FannyCalle 0:642a7818292a 187 }
FannyCalle 0:642a7818292a 188 }
FannyCalle 0:642a7818292a 189 obc.printf("______________________NORMAL MODE______________________");
FannyCalle 0:642a7818292a 190 }
FannyCalle 0:642a7818292a 191 //******* SLEEP MODE
FannyCalle 0:642a7818292a 192 for(int i=0;i<=5;i++){
FannyCalle 0:642a7818292a 193 sc.putc(stby);
FannyCalle 0:642a7818292a 194 obc.printf("standby: %d",stby);
FannyCalle 0:642a7818292a 195 }
FannyCalle 1:a147ca4f8fa0 196 float hant;
FannyCalle 2:ba3323e788fc 197 hant=h;//altura1;
FannyCalle 2:ba3323e788fc 198 //h=get_altura();
FannyCalle 2:ba3323e788fc 199 float hact=get_altura();//altura1;
FannyCalle 1:a147ca4f8fa0 200 float dif;
FannyCalle 1:a147ca4f8fa0 201 dif=hant-hact;
FannyCalle 1:a147ca4f8fa0 202 obc.printf("altan=%f altac=%f dif=%f\n",hant,hact,dif);
FannyCalle 1:a147ca4f8fa0 203 while(dif!=0){
FannyCalle 0:642a7818292a 204 obc.printf("********************sleep mode**************************");
FannyCalle 0:642a7818292a 205 //while(hact!=0.0){
FannyCalle 0:642a7818292a 206 hant=hact;
FannyCalle 2:ba3323e788fc 207 //h=get_altura();
FannyCalle 2:ba3323e788fc 208 hact=get_altura();//altura1;
FannyCalle 0:642a7818292a 209 take_tl();
FannyCalle 0:642a7818292a 210 take_mision();
FannyCalle 0:642a7818292a 211 save_tl();
FannyCalle 0:642a7818292a 212 tipo=2;
FannyCalle 0:642a7818292a 213 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 214 save_mision();
FannyCalle 1:a147ca4f8fa0 215 dif=hant-hact;
FannyCalle 1:a147ca4f8fa0 216 obc.printf("diferente de cero\n altan=%f altac=%f dif=%f\n",hant,hact,dif);
FannyCalle 1:a147ca4f8fa0 217 led=!led;
FannyCalle 0:642a7818292a 218 }
FannyCalle 0:642a7818292a 219 //******* OFF MODE
FannyCalle 0:642a7818292a 220 //camara=1; // apagando camara
FannyCalle 5:05fd6249c21b 221 prog_camara();
FannyCalle 0:642a7818292a 222 obc.printf("apagando camara\n\r");
FannyCalle 0:642a7818292a 223 led=0;
FannyCalle 0:642a7818292a 224 Vcondicional=1; //apagando sensores
FannyCalle 0:642a7818292a 225 sc.putc(sos);
FannyCalle 3:fef99c7c92b5 226 for(int i=0;i<=9;i++)
FannyCalle 3:fef99c7c92b5 227 {
FannyCalle 3:fef99c7c92b5 228 obc.printf("sos: %d\n",sos);
FannyCalle 3:fef99c7c92b5 229 }
FannyCalle 0:642a7818292a 230 //obc.printf("%d\n",alt);
FannyCalle 0:642a7818292a 231 //activar modo reset
FannyCalle 1:a147ca4f8fa0 232 HAL_PWR_EnterSTANDBYMode ();
FannyCalle 0:642a7818292a 233 //apagar obc
FannyCalle 0:642a7818292a 234 }
FannyCalle 0:642a7818292a 235 //********* Funciones
FannyCalle 0:642a7818292a 236
FannyCalle 0:642a7818292a 237 void take_tl(void){
FannyCalle 0:642a7818292a 238 int i;
FannyCalle 4:c2bdc2bced76 239 IMU[0]=imu[0]= mag.getMx();
FannyCalle 4:c2bdc2bced76 240 IMU[1]=imu[1]= mag.getMy();
FannyCalle 4:c2bdc2bced76 241 IMU[2]=imu[2]= mag.getMz();
FannyCalle 0:642a7818292a 242 mpu6050.MPU6050SelfTest(SelfTest); // Start by performing self test and reporting values
FannyCalle 0:642a7818292a 243 if(SelfTest[0] < 1.0f && SelfTest[1] < 1.0f && SelfTest[2] < 1.0f && SelfTest[3] < 1.0f && SelfTest[4] < 1.0f && SelfTest[5] < 1.0f)
FannyCalle 0:642a7818292a 244 {
FannyCalle 0:642a7818292a 245 mpu6050.resetMPU6050(); // Reset registers to default in preparation for device calibration
FannyCalle 0:642a7818292a 246 mpu6050.calibrateMPU6050(gyroBias, accelBias); // Calibrate gyro and accelerometers, load biases in bias registers
FannyCalle 0:642a7818292a 247 mpu6050.initMPU6050();
FannyCalle 0:642a7818292a 248 }
FannyCalle 0:642a7818292a 249 if(mpu6050.readByte(MPU6050_ADDRESS, INT_STATUS) & 0x01) { // check if data ready interrupt
FannyCalle 0:642a7818292a 250 mpu6050.readAccelData(accelCount); // Read the x/y/z adc values
FannyCalle 0:642a7818292a 251 mpu6050.getAres();
FannyCalle 0:642a7818292a 252
FannyCalle 0:642a7818292a 253 // Now we'll calculate the accleration value into actual g's
FannyCalle 1:a147ca4f8fa0 254 imu[3]= accelCount[0];//*aRes - accelBias[0]; // get actual g value, this depends on scale being set
FannyCalle 1:a147ca4f8fa0 255 imu[4]= accelCount[1];//*aRes - accelBias[1];
FannyCalle 1:a147ca4f8fa0 256 imu[5]= accelCount[2];//*aRes - accelBias[2];
FannyCalle 0:642a7818292a 257
FannyCalle 0:642a7818292a 258 mpu6050.readGyroData(gyroCount); // Read the x/y/z adc values
FannyCalle 0:642a7818292a 259 mpu6050.getGres();
FannyCalle 0:642a7818292a 260
FannyCalle 0:642a7818292a 261 // Calculate the gyro value into actual degrees per second
FannyCalle 1:a147ca4f8fa0 262 imu[6]= gyroCount[0];//*gRes; // - gyroBias[0]; // get actual gyro value, this depends on scale being set
FannyCalle 1:a147ca4f8fa0 263 imu[7]= gyroCount[1];//*gRes; // - gyroBias[1];
FannyCalle 1:a147ca4f8fa0 264 imu[8]= gyroCount[2];//*gRes; // - gyroBias[2];
FannyCalle 0:642a7818292a 265 float temobcount = mpu6050.readTempData(); // Read the x/y/z adc values
FannyCalle 0:642a7818292a 266 temperature = (temobcount) / 340. + 36.53; // Temperature in degrees Centigrade
FannyCalle 0:642a7818292a 267 }
FannyCalle 0:642a7818292a 268 for(i=3;i<=8;i++){
FannyCalle 0:642a7818292a 269 //imu.read();
FannyCalle 1:a147ca4f8fa0 270 IMU[i]=imu[i];//*10;//para la toma de datos
FannyCalle 0:642a7818292a 271 //obc.printf("%d\n",IMU[i]);
FannyCalle 0:642a7818292a 272 }
FannyCalle 0:642a7818292a 273 press=bmp.getPressure();
FannyCalle 0:642a7818292a 274 //temperatura tomada del imu
FannyCalle 4:c2bdc2bced76 275 int tempera=temperature*100;
FannyCalle 4:c2bdc2bced76 276 int offsetadc=60; //CORRECCION DE LOS DATOS TOMADOS DEL ADC, EL ERROR ES PRODUCIDO POR VREF.
FannyCalle 4:c2bdc2bced76 277 //tempera=ceil(tempera);
FannyCalle 4:c2bdc2bced76 278 temp[0]=tempera; //temperatura en milivoltios ajuatado a 12 bits.
FannyCalle 4:c2bdc2bced76 279 //float tempe1=temp2.read(); //obteniendo la temperatura en voltaje
FannyCalle 4:c2bdc2bced76 280 temp[1]= temp2.read_u16();temp[1]=(temp[1]>>4)+offsetadc;//temperatura en milivoltios ajuatado a 12 bits.
FannyCalle 4:c2bdc2bced76 281 sensor_adc[0]=temp3.read_u16();sen_adc[0]=(sensor_adc[0]>>4)+offsetadc;
FannyCalle 4:c2bdc2bced76 282 sensor_adc[1]=corriente.read_u16();sen_adc[1]=(sensor_adc[1]>>4)+offsetadc;
FannyCalle 4:c2bdc2bced76 283 sensor_adc[2]=voltaje.read_u16();sen_adc[2]=(sensor_adc[2]>>4)+offsetadc;
FannyCalle 0:642a7818292a 284 suv=uv.getUV();
FannyCalle 0:642a7818292a 285 //sensor_adc[3]=temp2.read();//uv.read();sen_adc[3]=sensor_adc[3]/0.0008789062;
FannyCalle 4:c2bdc2bced76 286
FannyCalle 2:ba3323e788fc 287 obc.printf("tomando telemetria\n");
FannyCalle 0:642a7818292a 288 }
FannyCalle 0:642a7818292a 289
FannyCalle 0:642a7818292a 290 void take_mision(void){
FannyCalle 1:a147ca4f8fa0 291 int h1, h2, tiempo;
FannyCalle 1:a147ca4f8fa0 292 h1=altura1*10;
FannyCalle 1:a147ca4f8fa0 293 h2=h*10;
FannyCalle 1:a147ca4f8fa0 294 tiempo=t.read();
FannyCalle 1:a147ca4f8fa0 295 tiempo=tiempo*100;
FannyCalle 1:a147ca4f8fa0 296 senfis[0]=h1;
FannyCalle 1:a147ca4f8fa0 297 senfis[1]=h2;
FannyCalle 1:a147ca4f8fa0 298 senfis[2]=tiempo;
FannyCalle 4:c2bdc2bced76 299 obc.printf("tiempo=%d",senfis[2]);
FannyCalle 1:a147ca4f8fa0 300 /*
FannyCalle 0:642a7818292a 301 ads.setGain(GAIN_TWOTHIRDS);
FannyCalle 0:642a7818292a 302 for(int i=0;i<=3;i++){
FannyCalle 0:642a7818292a 303 senfis[i]= ads.readADC_SingleEnded(i);
FannyCalle 1:a147ca4f8fa0 304 */
FannyCalle 0:642a7818292a 305 // obc.printf("\n senfis%d:%d 0x%.4x\n",i,senfis[i],senfis[i]);
FannyCalle 1:a147ca4f8fa0 306 //}
FannyCalle 0:642a7818292a 307 obc.printf("tomando mision\n");
FannyCalle 0:642a7818292a 308 }
FannyCalle 0:642a7818292a 309 void save_tl(void){
FannyCalle 0:642a7818292a 310 mkdir("/sd/cubesat2p",0777);
FannyCalle 0:642a7818292a 311 FILE *fp=fopen("/sd/cubesat2p/trama1.txt","a");
FannyCalle 0:642a7818292a 312 if(fp == NULL){
FannyCalle 0:642a7818292a 313 obc.printf("no se puede abrir sd \n");
FannyCalle 0:642a7818292a 314 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 315 NVIC_SystemReset();
FannyCalle 0:642a7818292a 316 }
FannyCalle 5:05fd6249c21b 317 fprintf(fp,"%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %d %d %d %d %d %f\r\n",imu[0],imu[1],imu[2],imu[3],imu[4],imu[5],imu[6],imu[7],imu[8],press,temperature,temp[1],sen_adc[0],sen_adc[1],sen_adc[2],suv,h);
FannyCalle 5:05fd6249c21b 318 obc.printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %d %d %d %d %d %f\r\n",imu[0],imu[1],imu[2],imu[3],imu[4],imu[5],imu[6],imu[7],imu[8],press,temperature,temp[1],sen_adc[0],sen_adc[1],sen_adc[2],suv,h);
FannyCalle 0:642a7818292a 319 fclose(fp);
FannyCalle 0:642a7818292a 320 obc.printf("guardando telemetria\n");
FannyCalle 0:642a7818292a 321 }
FannyCalle 0:642a7818292a 322 void save_mision(void){
FannyCalle 0:642a7818292a 323 mkdir("/sd/cubesat2p",0777);
FannyCalle 0:642a7818292a 324 FILE *fp=fopen("/sd/cubesat2p/trama2.txt","a");
FannyCalle 0:642a7818292a 325 if(fp == NULL){
FannyCalle 0:642a7818292a 326 obc.printf("no se puede abrir sd \n");
FannyCalle 0:642a7818292a 327 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 328 NVIC_SystemReset();
FannyCalle 0:642a7818292a 329 }
FannyCalle 0:642a7818292a 330 fprintf(fp,"%d %d %d %d\r\n",senfis[0],senfis[1],senfis[2],senfis[3]);
FannyCalle 0:642a7818292a 331 fclose(fp);
FannyCalle 0:642a7818292a 332 obc.printf("guardando mision\n");
FannyCalle 0:642a7818292a 333 }
FannyCalle 0:642a7818292a 334 void build_tr1(void){ //construir trama de datos 1
FannyCalle 4:c2bdc2bced76 335 int barometro;
FannyCalle 4:c2bdc2bced76 336 barometro=ceil(P*100); //tomando los 20 bits sin procesar del barometro
FannyCalle 4:c2bdc2bced76 337 bar=barometro;
FannyCalle 5:05fd6249c21b 338 // obc.printf("p=%f barometro= %d bar= %d temp0= %d \n\r",P,barometro,bar,temp[0]);
FannyCalle 5:05fd6249c21b 339 // wait(1);
FannyCalle 4:c2bdc2bced76 340 uint16_t y,z,y2,z4,ah,al;
FannyCalle 0:642a7818292a 341 uint32_t par[3];// para los tres pares de datos de 32 bits
FannyCalle 4:c2bdc2bced76 342 uint32_t y4,y3;
FannyCalle 0:642a7818292a 343 uint32_t AH,AL;
FannyCalle 0:642a7818292a 344 y=4080;
FannyCalle 0:642a7818292a 345 z=15;
FannyCalle 0:642a7818292a 346 y4=0xff000000;
FannyCalle 0:642a7818292a 347 y3=0x00ff0000;
FannyCalle 0:642a7818292a 348 y2=0x0000ff00;
FannyCalle 0:642a7818292a 349 z4=0x000000ff;
FannyCalle 0:642a7818292a 350 //completando a paquetes de 32 bits
FannyCalle 0:642a7818292a 351 par[0]=(bar<<12)|temp[0];
FannyCalle 5:05fd6249c21b 352 //obc.printf("par 0=%d",par[0]);
FannyCalle 5:05fd6249c21b 353 //wait(1);
FannyCalle 0:642a7818292a 354 ah=sen_adc[1]&y;
FannyCalle 0:642a7818292a 355 al=sen_adc[1]&z;
FannyCalle 0:642a7818292a 356 ah=(ah>>4);
FannyCalle 0:642a7818292a 357 par[1]=(temp[1]<<20)|(sen_adc[0]<<8)|ah;
FannyCalle 0:642a7818292a 358 uint8_t est=15;
FannyCalle 0:642a7818292a 359 par[2]=(al<<28)|(sen_adc[2]<<16)|suv;
FannyCalle 0:642a7818292a 360 //asignando 8 bits a cada espacio de la trama
FannyCalle 0:642a7818292a 361 for(int i=0;i<=8;i++){
FannyCalle 0:642a7818292a 362 AH=0;AL=0;
FannyCalle 0:642a7818292a 363 AH=IMU[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 364 AL=IMU[i]&z4;
FannyCalle 0:642a7818292a 365 trama[i*2+1]=AH;
FannyCalle 0:642a7818292a 366 trama[i*2+2]=AL;
FannyCalle 0:642a7818292a 367 }
FannyCalle 0:642a7818292a 368 for(int i=0;i<=2;i++){
FannyCalle 0:642a7818292a 369 AH=0;AL=0;
FannyCalle 0:642a7818292a 370 AH=par[i]&y4;AH=(AH>>24);
FannyCalle 0:642a7818292a 371 AL=par[i]&y3;AL=(AL>>16);
FannyCalle 0:642a7818292a 372 trama[i*4+19]=AH;
FannyCalle 0:642a7818292a 373 trama[i*4+20]=AL;
FannyCalle 0:642a7818292a 374 AH=0;AL=0;
FannyCalle 0:642a7818292a 375 AH=par[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 376 AL=par[i]&z4;
FannyCalle 0:642a7818292a 377 trama[i*4+21]=AH;
FannyCalle 0:642a7818292a 378 trama[i*4+22]=AL;
FannyCalle 0:642a7818292a 379 }
FannyCalle 0:642a7818292a 380 trama[0]=data1;//cabecera de la trama de datos 1
FannyCalle 0:642a7818292a 381 //publicando por el puerto serial. la trama de datos
FannyCalle 0:642a7818292a 382 for(int i=0;i<=30;i++){
FannyCalle 0:642a7818292a 383 obc.printf("%d\n",trama[i]);
FannyCalle 0:642a7818292a 384 }
FannyCalle 0:642a7818292a 385 obc.printf("construyendo trama 1\n");
FannyCalle 0:642a7818292a 386 }
FannyCalle 0:642a7818292a 387 void build_tr2(void){// construir trama de datos 2
FannyCalle 0:642a7818292a 388 bar=ceil(P*100); //tomando los 20 bits sin procesar del barometro
FannyCalle 4:c2bdc2bced76 389 uint16_t y,z,y2,z4,ah,al;
FannyCalle 4:c2bdc2bced76 390 uint32_t par,y4,y3;// para los tres pares de datos de 32 bits
FannyCalle 0:642a7818292a 391 uint32_t AH,AL;
FannyCalle 0:642a7818292a 392 y=4080;
FannyCalle 0:642a7818292a 393 z=15;
FannyCalle 0:642a7818292a 394 y4=0xff000000;
FannyCalle 0:642a7818292a 395 y3=0x00ff0000;
FannyCalle 0:642a7818292a 396 y2=0x0000ff00;
FannyCalle 0:642a7818292a 397 z4=0x000000ff;
FannyCalle 0:642a7818292a 398 //completando a 32 bits
FannyCalle 0:642a7818292a 399 par=(bar<<12)|sen_adc[1];
FannyCalle 0:642a7818292a 400 for(int i=0;i<=8;i++){
FannyCalle 0:642a7818292a 401 AH=0;AL=0;
FannyCalle 0:642a7818292a 402 AH=IMU[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 403 AL=IMU[i]&z4;
FannyCalle 0:642a7818292a 404 trama[i*2+1]=AH;
FannyCalle 0:642a7818292a 405 trama[i*2+2]=AL;
FannyCalle 0:642a7818292a 406 }
FannyCalle 0:642a7818292a 407 //asignando 8 bits a cada espacio de la trama2
FannyCalle 0:642a7818292a 408 AH=0;AL=0;
FannyCalle 0:642a7818292a 409 AH=par&y4;AH=(AH>>24);
FannyCalle 0:642a7818292a 410 AL=par&y3;AL=(AL>>16);
FannyCalle 0:642a7818292a 411 trama[19]=AH;
FannyCalle 0:642a7818292a 412 trama[20]=AL;
FannyCalle 0:642a7818292a 413 AH=0;AL=0;
FannyCalle 0:642a7818292a 414 AH=par&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 415 AL=par&z4;
FannyCalle 0:642a7818292a 416 trama[21]=AH;
FannyCalle 0:642a7818292a 417 trama[22]=AL;
FannyCalle 0:642a7818292a 418 for(int i=0;i<=3;i++){
FannyCalle 0:642a7818292a 419 AH=0;AL=0;
FannyCalle 0:642a7818292a 420 AH=senfis[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 421 AL=senfis[i]&z4;
FannyCalle 0:642a7818292a 422 trama[i*2+23]=AH;
FannyCalle 0:642a7818292a 423 trama[i*2+24]=AL;
FannyCalle 0:642a7818292a 424 }
FannyCalle 0:642a7818292a 425 trama[0]=data2; //cabecera de la trama de datos 2
FannyCalle 0:642a7818292a 426 //publicando la trama de datos 2 en el puerto virtual
FannyCalle 0:642a7818292a 427 for(int i=0;i<=30;i++){
FannyCalle 0:642a7818292a 428 // obc.printf("%d\n",trama[i]);
FannyCalle 0:642a7818292a 429 }
FannyCalle 0:642a7818292a 430 obc.printf("construyendo trama 2 mision\n");
FannyCalle 0:642a7818292a 431 }
FannyCalle 0:642a7818292a 432
FannyCalle 0:642a7818292a 433 void send_tr(void){
FannyCalle 0:642a7818292a 434 for(int i=0;i<=30;i++){
FannyCalle 0:642a7818292a 435 sc.putc(trama[i]);
FannyCalle 0:642a7818292a 436 }
FannyCalle 0:642a7818292a 437 led=!led;
FannyCalle 0:642a7818292a 438 obc.printf("enviando trama\n");
FannyCalle 0:642a7818292a 439 }
FannyCalle 0:642a7818292a 440
FannyCalle 0:642a7818292a 441 int condiciones_iniciales()
FannyCalle 0:642a7818292a 442 { float Ps=0;//variable auxiliar en la que se acumula la suma de los datos de presion para poder hallar la media
FannyCalle 0:642a7818292a 443 if(BR==0)
FannyCalle 0:642a7818292a 444 {
FannyCalle 0:642a7818292a 445 // recuperar datos iniciales
FannyCalle 0:642a7818292a 446 //************************************************************
FannyCalle 0:642a7818292a 447 //TOMAR LOS 100 DATOS CADA .05 SEGUNDOS, PARA DETERMINAR LA PRESION INICIAL
FannyCalle 0:642a7818292a 448 for (int i=0;i<100;i++)
FannyCalle 4:c2bdc2bced76 449 {
FannyCalle 0:642a7818292a 450 BMPTemp=bmp.getTemperature(); // generando t_fine PARA LA TEMPERATURA DE ESCALAMIENTP
FannyCalle 0:642a7818292a 451 Pp[i]= bmp.getPressure(); // pi es la condicion inical para la presion
FannyCalle 0:642a7818292a 452 Ps=Ps+Pp[i];
FannyCalle 0:642a7818292a 453 led=!led;
FannyCalle 1:a147ca4f8fa0 454 obc.printf("%.2f\n",Pp[i]);
FannyCalle 0:642a7818292a 455 wait(0.05);
FannyCalle 0:642a7818292a 456 }
FannyCalle 0:642a7818292a 457 //LA MEDIA DE TODOS LOS DATOS NOS DA LA PRESION REAL
FannyCalle 0:642a7818292a 458 Pi=Ps/100; //presion real
FannyCalle 0:642a7818292a 459 }
FannyCalle 0:642a7818292a 460 else
FannyCalle 0:642a7818292a 461 {
FannyCalle 0:642a7818292a 462 // leer las condiciones iniciales del archivo ci,txt
FannyCalle 0:642a7818292a 463 FILE *fp=fopen("/sd/condiciones/ci.txt","r");
FannyCalle 4:c2bdc2bced76 464 fscanf(fp,"%d %f %f",&BR,&BMPTemp,&Pi);
FannyCalle 0:642a7818292a 465 fclose(fp);
FannyCalle 0:642a7818292a 466 //fin de la lectura de datos
FannyCalle 0:642a7818292a 467 }
FannyCalle 0:642a7818292a 468 return 1;
FannyCalle 0:642a7818292a 469 }
FannyCalle 0:642a7818292a 470
FannyCalle 0:642a7818292a 471 void filtro_pasa_bajos()
FannyCalle 0:642a7818292a 472 {
FannyCalle 0:642a7818292a 473 float wc,ts,es,e;
FannyCalle 0:642a7818292a 474 //************************
FannyCalle 0:642a7818292a 475 //constantes para el filtro pasabajos
FannyCalle 0:642a7818292a 476 wc=0.1*3.1416*2; // frecuencia de corte para el filtro
FannyCalle 0:642a7818292a 477 ts=0.22; // tiempo de muestreo
FannyCalle 0:642a7818292a 478 es=-wc*ts; //
FannyCalle 0:642a7818292a 479 e=2.71828; // constante e
FannyCalle 0:642a7818292a 480 //************************************************************
FannyCalle 0:642a7818292a 481 //FILTRO PASABAJOS
FannyCalle 0:642a7818292a 482 //************************************************************
FannyCalle 0:642a7818292a 483 BMPTemp = (bmp.getTemperature()); //CALIBRANDO TEMPERATURA
FannyCalle 0:642a7818292a 484 Pa = bmp.getPressure(); //PRESION ANTERIOR
FannyCalle 0:642a7818292a 485 P=(1-pow(e,es))*Pa+Pi*pow(e,es); //filtro pasabajos
FannyCalle 0:642a7818292a 486 }
FannyCalle 0:642a7818292a 487
FannyCalle 0:642a7818292a 488 float get_altura()
FannyCalle 0:642a7818292a 489 {
FannyCalle 0:642a7818292a 490 float base,ex, cons, dif;
FannyCalle 0:642a7818292a 491 float altura0;
FannyCalle 0:642a7818292a 492 cons=(273+BMPTemp)/0.0065;
FannyCalle 0:642a7818292a 493 ex=0.1903; // constante obtenida de (Ro*L)/(g*M)
FannyCalle 0:642a7818292a 494 //************************
FannyCalle 0:642a7818292a 495 // condiciones iniciales para hallar la altura del sistema
FannyCalle 0:642a7818292a 496 // la ecuacion utilizada para determinar la altura es la formula barometrica
FannyCalle 0:642a7818292a 497 // con las constantes descritas en http://wikipedia/barometric altitud
FannyCalle 0:642a7818292a 498 //************************************************************
FannyCalle 0:642a7818292a 499 //TOMANDO LA ALTURA
FannyCalle 0:642a7818292a 500 //************************************************************
FannyCalle 0:642a7818292a 501 filtro_pasa_bajos();
FannyCalle 0:642a7818292a 502 base=P/P0;
FannyCalle 0:642a7818292a 503 altura1=cons*(1-pow(base,ex)); //ecuacion barometrica
FannyCalle 0:642a7818292a 504 //************************************************************
FannyCalle 0:642a7818292a 505 //ESCALANDO LA ALTURA A MEDIO METRO
FannyCalle 0:642a7818292a 506 //************************************************************
FannyCalle 0:642a7818292a 507 altura0=floor(altura1); //RECONDEO AL MENOR
FannyCalle 0:642a7818292a 508 dif=altura1-altura0; //SACANDO LA PARTE DECIMAL
FannyCalle 0:642a7818292a 509 dif=dif*10; //CONVIRTIENDOLO A ENTERO
FannyCalle 0:642a7818292a 510 dif=floor(dif); //REDONDEANDO AL MENOR
FannyCalle 0:642a7818292a 511 if (altura1 >= 0){ //VER SI ES NEGATIVO O POSITIVO
FannyCalle 0:642a7818292a 512 if(dif>=5){
FannyCalle 4:c2bdc2bced76 513 h=altura0+0.5; //SI ES POSITIVO Y MAYOR A 5 LA PARTE DECIMAL, ANIADE .5 AL LA PARTE ENTERA
FannyCalle 0:642a7818292a 514 }
FannyCalle 0:642a7818292a 515 else{
FannyCalle 0:642a7818292a 516 h=altura0; //SI ES MENOR A 5 LA PARTE DECIMAL Y POSITIVO, SOLO TOMA LA PARTE ENTERA
FannyCalle 0:642a7818292a 517 }
FannyCalle 0:642a7818292a 518 }
FannyCalle 0:642a7818292a 519 else{
FannyCalle 0:642a7818292a 520 if(dif<=5){ //SI ES NEGATIVO Y MENOR A 5 LA PARTE DECIMAL, LE SUMA .5 A LA PARTE ENTERA
FannyCalle 0:642a7818292a 521 h=altura0+.5;
FannyCalle 0:642a7818292a 522 }
FannyCalle 0:642a7818292a 523 else{h=ceil(altura1); // SI EN NEGATIVO Y MAYOR A 5 LA PATE DECIMAL, REDONDEA AL MAYOR
FannyCalle 0:642a7818292a 524 }
FannyCalle 0:642a7818292a 525 }
FannyCalle 0:642a7818292a 526 //************************************************************
FannyCalle 0:642a7818292a 527 //FIN DEL REDONDEO
FannyCalle 0:642a7818292a 528 //************************************************************
FannyCalle 0:642a7818292a 529 obc.printf("%.2f %.2f\n",altura1, h); //guarda en el sd //IMPRIME EN PANTALL
FannyCalle 0:642a7818292a 530 Pi=P;
FannyCalle 0:642a7818292a 531 return (h);
FannyCalle 0:642a7818292a 532 }
FannyCalle 0:642a7818292a 533 int guardar(int tipo)
FannyCalle 0:642a7818292a 534 {
FannyCalle 0:642a7818292a 535 int i;
FannyCalle 0:642a7818292a 536 //si es de tipo 1, entonces son condicones iniciales
FannyCalle 0:642a7818292a 537 if (tipo==1)
FannyCalle 0:642a7818292a 538 {
FannyCalle 0:642a7818292a 539 if(BR==0)
FannyCalle 0:642a7818292a 540 {
FannyCalle 0:642a7818292a 541 //CREACION Y APERTURA DEL ULTIMO DOCUMENTO CREADO
FannyCalle 0:642a7818292a 542 //lectura del numero del ultimo documento creado.
FannyCalle 0:642a7818292a 543 FILE *dp=fopen("/sd/carpetas/numero.txt","r");
FannyCalle 0:642a7818292a 544 if(dp==NULL){printf("no se pudo acceder al sd 2...");
FannyCalle 0:642a7818292a 545 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 546 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 547 fscanf(dp,"%d",&ND);
FannyCalle 1:a147ca4f8fa0 548 fclose(dp);
FannyCalle 0:642a7818292a 549 ND=ND+1;
FannyCalle 4:c2bdc2bced76 550 // creando la carpeta y guardando los datos iniciales en la carpeta de datos de prueba
FannyCalle 0:642a7818292a 551 FILE *dp1=fopen("/sd/carpetas/numero.txt","w");
FannyCalle 0:642a7818292a 552 if(dp1==NULL){printf("no se pudo acceder al sd 3...");
FannyCalle 0:642a7818292a 553 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 554 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 555 fprintf(dp1,"%d",ND);
FannyCalle 0:642a7818292a 556 fclose(dp1);
FannyCalle 4:c2bdc2bced76 557 //GRaBANDO LAS CONDICIONES INICIALES EN EL DOCUMENTO CI
FannyCalle 0:642a7818292a 558 FILE *fp=fopen("/sd/condiciones/ci.txt","w");
FannyCalle 0:642a7818292a 559 if(fp==NULL){printf("no s epudo acceder al sd 4...");
FannyCalle 0:642a7818292a 560 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 561 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 562 fprintf(fp,"%d %f %f \r\n", BR,BMPTemp,Pi);
FannyCalle 0:642a7818292a 563 fclose(fp);
FannyCalle 0:642a7818292a 564 // creando la carpeta y guardando los datos iniciales en la carpeta condiciones iniciales
FannyCalle 0:642a7818292a 565 dato[25]=ND+48;
FannyCalle 0:642a7818292a 566 printf(dato,".txt"); printf("\n");
FannyCalle 0:642a7818292a 567 FILE *fobc=fopen(dato,"a");
FannyCalle 0:642a7818292a 568 for (i=0;i<100;i++)
FannyCalle 0:642a7818292a 569 {
FannyCalle 0:642a7818292a 570 fprintf(fobc,"%.2f \r\n",Pp[i]);
FannyCalle 0:642a7818292a 571 wait(0.01);
FannyCalle 0:642a7818292a 572 }
FannyCalle 0:642a7818292a 573 fclose(fobc);
FannyCalle 0:642a7818292a 574 //fin de la cracion del documento y guardado de datos
FannyCalle 0:642a7818292a 575 /////GUARDANDO EL PRIMER DATO EN EL NUEVO DOCUMENTO CREADO
FannyCalle 0:642a7818292a 576 file[16]=ND+48; //ajuste a ascii
FannyCalle 0:642a7818292a 577 printf(file,".txt"); printf("\n");
FannyCalle 0:642a7818292a 578 FILE *pp=fopen(file,"w");
FannyCalle 4:c2bdc2bced76 579 if(pp==NULL)
FannyCalle 4:c2bdc2bced76 580 {
FannyCalle 4:c2bdc2bced76 581 printf("no s epudo acceder al sd..5");
FannyCalle 4:c2bdc2bced76 582 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 4:c2bdc2bced76 583 NVIC_SystemReset();
FannyCalle 4:c2bdc2bced76 584 }
FannyCalle 0:642a7818292a 585 fprintf(pp,"%f %f %f inicio\r\n",t.read(),BMPTemp,Pi);
FannyCalle 0:642a7818292a 586 fclose(pp);
FannyCalle 0:642a7818292a 587 led=1;
FannyCalle 5:05fd6249c21b 588 //wait(1);
FannyCalle 0:642a7818292a 589 }
FannyCalle 0:642a7818292a 590 else{BR=0;
FannyCalle 0:642a7818292a 591 }
FannyCalle 0:642a7818292a 592 //GRABANDO LAS CONDICIONES INICIALES EN EL DOCUMENTO CI
FannyCalle 0:642a7818292a 593 FILE *fp=fopen("/sd/condiciones/ci.txt","w");
FannyCalle 0:642a7818292a 594 if(fp==NULL){printf("no s epudo acceder al sd 6...");
FannyCalle 0:642a7818292a 595 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 596 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 597 fprintf(fp,"%d %f %f \r\n", BR,BMPTemp,Pi);
FannyCalle 0:642a7818292a 598 fclose(fp);
FannyCalle 0:642a7818292a 599 //fin de la escrituta de datos de datos
FannyCalle 0:642a7818292a 600 //lectura del numero del ultimo documento creado.
FannyCalle 0:642a7818292a 601 FILE *dp=fopen("/sd/carpetas/numero.txt","r");
FannyCalle 0:642a7818292a 602 fscanf(dp,"%d",&ND);
FannyCalle 0:642a7818292a 603 fclose(dp);
FannyCalle 0:642a7818292a 604 //fin de la lectura de dato
FannyCalle 0:642a7818292a 605 FILE *pp=fopen(file,"w");
FannyCalle 0:642a7818292a 606 fprintf(pp,"recuperacion del sistema satisfactoriamente\r\n");
FannyCalle 0:642a7818292a 607 fclose(pp);
FannyCalle 0:642a7818292a 608 return (1);
FannyCalle 0:642a7818292a 609 }
FannyCalle 0:642a7818292a 610 else
FannyCalle 0:642a7818292a 611 {
FannyCalle 1:a147ca4f8fa0 612 if(tipo==2)
FannyCalle 1:a147ca4f8fa0 613 {
FannyCalle 1:a147ca4f8fa0 614 FILE *pp=fopen(file,"a");
FannyCalle 1:a147ca4f8fa0 615 if (pp == NULL) {printf("no se inicion 5...");}
FannyCalle 5:05fd6249c21b 616 fprintf(pp,"%f %d %d %d %d %d %d %d %d %d %f %f %d %d %d %d %d %d %f\r\n",t.read(),imu[0],imu[1],imu[2],imu[3],imu[4],imu[5],imu[6],imu[7],imu[8],press,temperature,temp[1],sen_adc[0],sen_adc[1],sen_adc[2],suv,h);
FannyCalle 1:a147ca4f8fa0 617 fclose(pp);
FannyCalle 1:a147ca4f8fa0 618 return (2);
FannyCalle 1:a147ca4f8fa0 619 }
FannyCalle 1:a147ca4f8fa0 620 else
FannyCalle 1:a147ca4f8fa0 621 {
FannyCalle 1:a147ca4f8fa0 622 FILE *pp=fopen(file,"a");
FannyCalle 1:a147ca4f8fa0 623 if (pp == NULL) {printf("no se inicion 5...");}
FannyCalle 5:05fd6249c21b 624 fprintf(pp,"%f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %f %f\r\n",t.read(),trama[0],trama[1],trama[2],trama[3],trama[4],trama[5],trama[6],trama[7],trama[8], trama[9],trama[10],trama[11],trama[12],trama[13],trama[14],trama[15],trama[16],trama[17],trama[18], trama[19],trama[20],trama[21],trama[22],trama[23],trama[24],trama[25],trama[26],trama[27],trama[28], trama[29], trama[30], h, altura1);
FannyCalle 1:a147ca4f8fa0 625 fclose(pp);
FannyCalle 1:a147ca4f8fa0 626 return (2);
FannyCalle 1:a147ca4f8fa0 627 }
FannyCalle 0:642a7818292a 628 }
FannyCalle 5:05fd6249c21b 629 }
FannyCalle 5:05fd6249c21b 630 void prog_camara(void)
FannyCalle 5:05fd6249c21b 631 {
FannyCalle 5:05fd6249c21b 632 led=0;
FannyCalle 5:05fd6249c21b 633 camera=1;
FannyCalle 5:05fd6249c21b 634 wait(1);
FannyCalle 5:05fd6249c21b 635 camera=0;
FannyCalle 5:05fd6249c21b 636 led=1;
FannyCalle 5:05fd6249c21b 637 wait(2);
FannyCalle 5:05fd6249c21b 638 camera=1;
FannyCalle 0:642a7818292a 639 }