Marlon Fulla / Mbed 2 deprecated 2014FEB04_Vibrometro_Xbee

Dependencies:   mbed

Fork of 2014FEB4_Vibrometro_Xbee by Marlon Fulla

Revision:
4:29f56a8a8390
Parent:
3:8125d6b7afff
Child:
5:c208cb05dd4b
--- a/main.cpp	Thu Jul 11 01:36:32 2013 +0000
+++ b/main.cpp	Mon Aug 05 00:23:42 2013 +0000
@@ -14,52 +14,56 @@
 SDFileSystem sd(PTD2, PTD3, PTD1, PTD0,"sd");
 //Comunicación Xbee
 Serial xbee(PTA2,PTA1);
+//Serial xbee(USBTX,USBRX);
 
 //Definición de variables globales
 FILE * fp1;
 FILE * fp2;
 int inicio = 0;
 int fin = 0;
-int j = 0;
-//char read [64] = {0};
-//char readvar [64] = {0};
+int samples = 1;
+char read [64] = {0};
+char readvar [512] = {0};
 
 int main()
 {
-    xbee.baud(4800);
+    xbee.baud(9600);
+    reloj.start();
     slp = 1;    //Habilitado el modo de operación normal (MMA7361L)
     g_sel = 0;  //Ajusta la sensibilidad a 1.5g (cambiar a 1 para ajustar sensibilidad a 6g)
-
+    
     while(1) {
-        char read [64] = {0};
-        char readvar [64] = {0};
-        
+        //char read [64] = {0};
+        //char readvar [512] = {0};
+
         xbee.scanf("%s",read); //Espera la recepción de caracteres
         switch(read[0]) {
-            case 's':   //Inicia la adquisición de datos
-                fp1 = fopen ("/sd/test.txt","w");
-                reloj.start();
-                inicio=reloj.read_us();
-                for (int i=0;i<126;i++) fprintf (fp1,"%04X%04X%04X\n",ain_x.read_u16(),ain_y.read_u16(),ain_z.read_u16());
-                fin = reloj.read_us ();
-                //fprintf (fp1,"%012d\n",fin-inicio);
-                fclose (fp1);
-                break;
-            case 'o':   //Abre el archivo de datos
+            case 'r':   //Lee la información de la memoria SD y la envía mediante Xbee
                 fp2 = fopen ("/sd/test.txt","r");
-                break;
-            case 'r':   //Genera un paquete de 504 caracteres y los envía mediante Xbee
-                for (int i=0;i<42;i++) {
+                for (int i=0; i<samples/42; i++) {
                     fscanf (fp2,"%s",readvar);
                     xbee.printf("%s",readvar);
+                    xbee.putc('\n');
                 }
-                xbee.putc('\n');
-                break;
-            case 'c':   //Cierra el archivo de datos
                 fclose (fp2);
                 break;
             case 't':   //Envía el tiempo de adquisición
-                xbee.printf("%012d\n",fin-inicio);
+                xbee.printf("%010d\n",fin-inicio);
+                break;
+            default:    //Inicia la conversión A/D y la almacena en la memoria SD
+                samples = atoi(read);
+                //Inicio del reloj para determinar la tasa de muestreo
+                fp1 = fopen ("/sd/test.txt","w");
+                reloj.reset();
+                inicio = reloj.read_us();
+                //Ciclo de lectura de los ejes x, y, z del acelerómetro triaxial MMA7361L
+                for(int i=1; i<=samples; i++) {
+                    fprintf (fp1,"%04X%04X%04X",ain_x.read_u16(),ain_y.read_u16(),ain_z.read_u16());
+                    if((i>=42) && (i%42==0)) fprintf (fp1,"\n");
+                }
+                //Tiempo transcurrido desde la ejecución del reloj
+                fin = reloj.read_us();
+                fclose (fp1);
                 break;
         }
     }