Marlon Fulla / Mbed 2 deprecated 2014FEB4_Vibrometro_Xbee

Dependencies:   mbed

Committer:
jlpalaci
Date:
Thu Aug 22 01:39:08 2013 +0000
Revision:
5:c208cb05dd4b
Parent:
4:29f56a8a8390
Child:
6:99df19f0f6eb
Frecuencia puerto serie a 19200baudios

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jlpalaci 0:1eb268d3d14e 1 #include "mbed.h"
jlpalaci 0:1eb268d3d14e 2 #include "SDFileSystem.h"
jlpalaci 0:1eb268d3d14e 3
jlpalaci 0:1eb268d3d14e 4 //Pines de conversión A/D asociados a los ejes del acelerómetro triaxial MMA7361L
jlpalaci 0:1eb268d3d14e 5 AnalogIn ain_x(PTB0);
jlpalaci 0:1eb268d3d14e 6 AnalogIn ain_y(PTB1);
jlpalaci 0:1eb268d3d14e 7 AnalogIn ain_z(PTB2);
jlpalaci 0:1eb268d3d14e 8 //Pines digitales para configurar el acelerómetro triaxial MMA7361L
jlpalaci 0:1eb268d3d14e 9 DigitalOut slp(PTB3);
jlpalaci 0:1eb268d3d14e 10 DigitalOut g_sel(PTC2);
jlpalaci 0:1eb268d3d14e 11 //Cronómetro
jlpalaci 0:1eb268d3d14e 12 Timer reloj;
jlpalaci 0:1eb268d3d14e 13 //SD FAT system
jlpalaci 0:1eb268d3d14e 14 SDFileSystem sd(PTD2, PTD3, PTD1, PTD0,"sd");
jlpalaci 0:1eb268d3d14e 15 //Comunicación Xbee
jlpalaci 0:1eb268d3d14e 16 Serial xbee(PTA2,PTA1);
jlpalaci 4:29f56a8a8390 17 //Serial xbee(USBTX,USBRX);
jlpalaci 0:1eb268d3d14e 18
jlpalaci 3:8125d6b7afff 19 //Definición de variables globales
jlpalaci 0:1eb268d3d14e 20 FILE * fp1;
jlpalaci 0:1eb268d3d14e 21 FILE * fp2;
jlpalaci 2:a2b90ac0b81b 22 int inicio = 0;
jlpalaci 2:a2b90ac0b81b 23 int fin = 0;
jlpalaci 4:29f56a8a8390 24 int samples = 1;
jlpalaci 4:29f56a8a8390 25 char read [64] = {0};
jlpalaci 4:29f56a8a8390 26 char readvar [512] = {0};
jlpalaci 0:1eb268d3d14e 27
jlpalaci 0:1eb268d3d14e 28 int main()
jlpalaci 0:1eb268d3d14e 29 {
jlpalaci 5:c208cb05dd4b 30 xbee.baud(19200);
jlpalaci 4:29f56a8a8390 31 reloj.start();
jlpalaci 0:1eb268d3d14e 32 slp = 1; //Habilitado el modo de operación normal (MMA7361L)
jlpalaci 0:1eb268d3d14e 33 g_sel = 0; //Ajusta la sensibilidad a 1.5g (cambiar a 1 para ajustar sensibilidad a 6g)
jlpalaci 5:c208cb05dd4b 34
jlpalaci 0:1eb268d3d14e 35 while(1) {
jlpalaci 4:29f56a8a8390 36 //char read [64] = {0};
jlpalaci 4:29f56a8a8390 37 //char readvar [512] = {0};
jlpalaci 4:29f56a8a8390 38
jlpalaci 3:8125d6b7afff 39 xbee.scanf("%s",read); //Espera la recepción de caracteres
jlpalaci 2:a2b90ac0b81b 40 switch(read[0]) {
jlpalaci 4:29f56a8a8390 41 case 'r': //Lee la información de la memoria SD y la envía mediante Xbee
jlpalaci 2:a2b90ac0b81b 42 fp2 = fopen ("/sd/test.txt","r");
jlpalaci 4:29f56a8a8390 43 for (int i=0; i<samples/42; i++) {
jlpalaci 2:a2b90ac0b81b 44 fscanf (fp2,"%s",readvar);
jlpalaci 2:a2b90ac0b81b 45 xbee.printf("%s",readvar);
jlpalaci 4:29f56a8a8390 46 xbee.putc('\n');
jlpalaci 2:a2b90ac0b81b 47 }
jlpalaci 2:a2b90ac0b81b 48 fclose (fp2);
jlpalaci 2:a2b90ac0b81b 49 break;
jlpalaci 3:8125d6b7afff 50 case 't': //Envía el tiempo de adquisición
jlpalaci 4:29f56a8a8390 51 xbee.printf("%010d\n",fin-inicio);
jlpalaci 4:29f56a8a8390 52 break;
jlpalaci 4:29f56a8a8390 53 default: //Inicia la conversión A/D y la almacena en la memoria SD
jlpalaci 4:29f56a8a8390 54 samples = atoi(read);
jlpalaci 4:29f56a8a8390 55 //Inicio del reloj para determinar la tasa de muestreo
jlpalaci 4:29f56a8a8390 56 fp1 = fopen ("/sd/test.txt","w");
jlpalaci 4:29f56a8a8390 57 reloj.reset();
jlpalaci 4:29f56a8a8390 58 inicio = reloj.read_us();
jlpalaci 4:29f56a8a8390 59 //Ciclo de lectura de los ejes x, y, z del acelerómetro triaxial MMA7361L
jlpalaci 4:29f56a8a8390 60 for(int i=1; i<=samples; i++) {
jlpalaci 4:29f56a8a8390 61 fprintf (fp1,"%04X%04X%04X",ain_x.read_u16(),ain_y.read_u16(),ain_z.read_u16());
jlpalaci 4:29f56a8a8390 62 if((i>=42) && (i%42==0)) fprintf (fp1,"\n");
jlpalaci 4:29f56a8a8390 63 }
jlpalaci 4:29f56a8a8390 64 //Tiempo transcurrido desde la ejecución del reloj
jlpalaci 4:29f56a8a8390 65 fin = reloj.read_us();
jlpalaci 4:29f56a8a8390 66 fclose (fp1);
jlpalaci 3:8125d6b7afff 67 break;
jlpalaci 0:1eb268d3d14e 68 }
jlpalaci 0:1eb268d3d14e 69 }
jlpalaci 0:1eb268d3d14e 70 }