Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "SDFileSystem.h" 00003 //#include <string> 00004 00005 //Pines de conversión A/D asociados a los ejes del acelerómetro triaxial MMA7361L 00006 AnalogIn ain_x(PTB0); 00007 AnalogIn ain_y(PTB1); 00008 AnalogIn ain_z(PTB2); 00009 //Pines digitales para configurar el acelerómetro triaxial MMA7361L 00010 DigitalOut slp(PTB3); 00011 DigitalOut g_sel(PTC2); 00012 //Cronómetro 00013 Timer reloj; 00014 //SD FAT system 00015 SDFileSystem sd(PTD2, PTD3, PTD1, PTD0,"sd"); 00016 //Comunicación Xbee 00017 Serial xbee(PTA2,PTA1); //Serial xbee(USBTX,USBRX); 00018 //Pin de control de flujo RTS (usado en la función Serial_RTS) 00019 DigitalIn rts(PTD4); 00020 00021 00022 //Definición de variables globales 00023 FILE * fp1; 00024 FILE * fp2; 00025 int inicio = 0; 00026 int fin = 0; 00027 int samples = 1; 00028 int imax = 0; 00029 char read [64] = {0}; 00030 char readvar [512] = {0}; 00031 00032 00033 //Declaración de la función UART con control de flujo 00034 //Sólo RTS 00035 int Serial_RTS(const char *str); 00036 00037 00038 int main() 00039 { 00040 //xbee.baud(9600); 00041 xbee.baud(115200); 00042 reloj.start(); 00043 slp = 1; //Habilitado el modo de operación normal (MMA7361L) 00044 g_sel = 0; //Ajusta la sensibilidad a 1.5g (cambiar a 1 para ajustar sensibilidad a 6g) 00045 00046 while(1) { 00047 xbee.scanf("%s",read); //Espera la recepción de caracteres 00048 switch(read[0]) { 00049 case 'r': //Lee la información de la memoria SD y la envía mediante Xbee 00050 //if(read[1]=='1') { //Nombre para modulo 1... 00051 fp2 = fopen ("/sd/test.txt","r"); 00052 00053 if(samples%42==0 && samples>42) imax=samples/42; 00054 else imax=samples/42; 00055 //imax=samples/42; 00056 00057 for (int i=0; i<imax; i++) { 00058 fscanf (fp2,"%s",readvar); 00059 //xbee.printf("%s",readvar); 00060 Serial_RTS(readvar); 00061 xbee.putc('\n'); 00062 } 00063 fclose (fp2); 00064 //} 00065 break; 00066 case 't': //Envía el tiempo de adquisición 00067 //if(read[1]=='1') //Nombre para modulo 1... 00068 xbee.printf("%010d\n",fin-inicio); 00069 break; 00070 default: //Inicia la conversión A/D y la almacena en la memoria SD 00071 samples = atoi(read); 00072 //Inicio del reloj para determinar la tasa de muestreo 00073 fp1 = fopen ("/sd/test.txt","w"); 00074 reloj.reset(); 00075 inicio = reloj.read_us(); 00076 //Ciclo de lectura de los ejes x, y, z del acelerómetro triaxial MMA7361L 00077 for(int i=1; i<=samples; i++) { 00078 fprintf (fp1,"%04X%04X%04X",ain_x.read_u16(),ain_y.read_u16(),ain_z.read_u16()); 00079 if((i>=42) && (i%42==0)) fprintf (fp1,"\n"); 00080 } 00081 //Tiempo transcurrido desde la ejecución del reloj 00082 fin = reloj.read_us(); 00083 fclose (fp1); 00084 break; 00085 } 00086 } 00087 } 00088 00089 00090 //Definición de la función UART RTS 00091 int Serial_RTS(const char *str) 00092 { 00093 while (*str) { 00094 while(rts); 00095 xbee.putc(*str ++); 00096 } 00097 return 0; 00098 }
Generated on Thu Jul 14 2022 18:33:09 by
1.7.2