simple data logger writing to internal RAM. No existing over-written. search for next file count

Dependencies:   mbed

Committer:
teekiansek
Date:
Fri Feb 26 18:20:58 2010 +0000
Revision:
0:8d245bbd9c2b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
teekiansek 0:8d245bbd9c2b 1 #include "mbed.h"
teekiansek 0:8d245bbd9c2b 2 #include "TextLCD.h"
teekiansek 0:8d245bbd9c2b 3
teekiansek 0:8d245bbd9c2b 4 //#include "MAX6662.h"
teekiansek 0:8d245bbd9c2b 5 // Create the local filesystem under the name "local"
teekiansek 0:8d245bbd9c2b 6
teekiansek 0:8d245bbd9c2b 7 LocalFileSystem local("local");
teekiansek 0:8d245bbd9c2b 8 TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3
teekiansek 0:8d245bbd9c2b 9 DigitalOut led1(LED1);
teekiansek 0:8d245bbd9c2b 10 DigitalOut led2(LED2);
teekiansek 0:8d245bbd9c2b 11 DigitalOut led3(LED3);
teekiansek 0:8d245bbd9c2b 12 DigitalIn button(p12);
teekiansek 0:8d245bbd9c2b 13
teekiansek 0:8d245bbd9c2b 14 AnalogIn grx(p16); // gyroscope x-axis
teekiansek 0:8d245bbd9c2b 15 AnalogIn gry(p17); // gyroscope y-axis
teekiansek 0:8d245bbd9c2b 16 AnalogIn acx(p18); // accelerometer x-axis
teekiansek 0:8d245bbd9c2b 17 AnalogIn acy(p19); // accelerometer y-axis
teekiansek 0:8d245bbd9c2b 18 AnalogIn acz(p20); // accelerometer z-axis
teekiansek 0:8d245bbd9c2b 19
teekiansek 0:8d245bbd9c2b 20
teekiansek 0:8d245bbd9c2b 21
teekiansek 0:8d245bbd9c2b 22 char direct[]= "local";
teekiansek 0:8d245bbd9c2b 23 char file[20];
teekiansek 0:8d245bbd9c2b 24 char next_file[20];
teekiansek 0:8d245bbd9c2b 25 int file_no;
teekiansek 0:8d245bbd9c2b 26 int count;
teekiansek 0:8d245bbd9c2b 27 bool not_found;
teekiansek 0:8d245bbd9c2b 28 bool check;
teekiansek 0:8d245bbd9c2b 29
teekiansek 0:8d245bbd9c2b 30 //*********************************************
teekiansek 0:8d245bbd9c2b 31 //sub for filename search
teekiansek 0:8d245bbd9c2b 32 bool exists(char * root, char *filename) {
teekiansek 0:8d245bbd9c2b 33
teekiansek 0:8d245bbd9c2b 34 DIR *d;
teekiansek 0:8d245bbd9c2b 35 struct dirent *p;
teekiansek 0:8d245bbd9c2b 36 d = opendir("/local");
teekiansek 0:8d245bbd9c2b 37
teekiansek 0:8d245bbd9c2b 38 //printf("\nList of files in the directory %s:\n", root);
teekiansek 0:8d245bbd9c2b 39 bool found = false;
teekiansek 0:8d245bbd9c2b 40 if ( d != NULL ) {
teekiansek 0:8d245bbd9c2b 41 while ( !found && (p = readdir(d)) != NULL ) {
teekiansek 0:8d245bbd9c2b 42 //printf(" - %s\n", p->d_name);
teekiansek 0:8d245bbd9c2b 43 if ( strcmp(p->d_name, filename) == 0 )
teekiansek 0:8d245bbd9c2b 44 found = true;
teekiansek 0:8d245bbd9c2b 45 }
teekiansek 0:8d245bbd9c2b 46 }
teekiansek 0:8d245bbd9c2b 47 closedir(d);
teekiansek 0:8d245bbd9c2b 48 not_found=!found;
teekiansek 0:8d245bbd9c2b 49 return found;
teekiansek 0:8d245bbd9c2b 50 }
teekiansek 0:8d245bbd9c2b 51
teekiansek 0:8d245bbd9c2b 52 //*********************************************
teekiansek 0:8d245bbd9c2b 53
teekiansek 0:8d245bbd9c2b 54 // this routine could check the last number of file it is
teekiansek 0:8d245bbd9c2b 55 // last file _no = file_no - 1;
teekiansek 0:8d245bbd9c2b 56
teekiansek 0:8d245bbd9c2b 57 //not_found=false; // intial
teekiansek 0:8d245bbd9c2b 58
teekiansek 0:8d245bbd9c2b 59
teekiansek 0:8d245bbd9c2b 60 //*********************************************
teekiansek 0:8d245bbd9c2b 61 //sub to search for filename
teekiansek 0:8d245bbd9c2b 62 int search( void ) {
teekiansek 0:8d245bbd9c2b 63
teekiansek 0:8d245bbd9c2b 64 not_found=false;
teekiansek 0:8d245bbd9c2b 65 led1=button;
teekiansek 0:8d245bbd9c2b 66 file_no=1;
teekiansek 0:8d245bbd9c2b 67 count=0;
teekiansek 0:8d245bbd9c2b 68
teekiansek 0:8d245bbd9c2b 69 while (not_found==false) {
teekiansek 0:8d245bbd9c2b 70 sprintf(file, "TEMP%d.CSV", file_no);
teekiansek 0:8d245bbd9c2b 71 // wait(.1);
teekiansek 0:8d245bbd9c2b 72 if ( exists(direct, file) ) {
teekiansek 0:8d245bbd9c2b 73
teekiansek 0:8d245bbd9c2b 74 // lcd.cls();
teekiansek 0:8d245bbd9c2b 75 //lcd.locate(0,0);
teekiansek 0:8d245bbd9c2b 76 //lcd.printf("Found %s",file);
teekiansek 0:8d245bbd9c2b 77 } else {
teekiansek 0:8d245bbd9c2b 78
teekiansek 0:8d245bbd9c2b 79 lcd.cls();
teekiansek 0:8d245bbd9c2b 80 //lcd.locate(0,0);
teekiansek 0:8d245bbd9c2b 81 lcd.printf("Not %s", file);
teekiansek 0:8d245bbd9c2b 82 }
teekiansek 0:8d245bbd9c2b 83 file_no++;
teekiansek 0:8d245bbd9c2b 84 // lcd.locate(0,1);
teekiansek 0:8d245bbd9c2b 85 //lcd.printf("%d", file_no-1);
teekiansek 0:8d245bbd9c2b 86 }
teekiansek 0:8d245bbd9c2b 87 check=1;
teekiansek 0:8d245bbd9c2b 88 led2=check;
teekiansek 0:8d245bbd9c2b 89 return file_no;
teekiansek 0:8d245bbd9c2b 90 }
teekiansek 0:8d245bbd9c2b 91
teekiansek 0:8d245bbd9c2b 92 //***************************************************
teekiansek 0:8d245bbd9c2b 93
teekiansek 0:8d245bbd9c2b 94 //**************************************************
teekiansek 0:8d245bbd9c2b 95 //sub to delay input button
teekiansek 0:8d245bbd9c2b 96 //avoid bouncing effect
teekiansek 0:8d245bbd9c2b 97
teekiansek 0:8d245bbd9c2b 98 int button_delay(bool b) {
teekiansek 0:8d245bbd9c2b 99 bool c = false;
teekiansek 0:8d245bbd9c2b 100 if (b==true) {
teekiansek 0:8d245bbd9c2b 101 wait(.5);
teekiansek 0:8d245bbd9c2b 102 c=true;
teekiansek 0:8d245bbd9c2b 103 } else {
teekiansek 0:8d245bbd9c2b 104 c=false;
teekiansek 0:8d245bbd9c2b 105 }
teekiansek 0:8d245bbd9c2b 106 return c;
teekiansek 0:8d245bbd9c2b 107 }
teekiansek 0:8d245bbd9c2b 108
teekiansek 0:8d245bbd9c2b 109 //*******************************************************
teekiansek 0:8d245bbd9c2b 110 //main program start here
teekiansek 0:8d245bbd9c2b 111
teekiansek 0:8d245bbd9c2b 112 bool sw;
teekiansek 0:8d245bbd9c2b 113 int no;
teekiansek 0:8d245bbd9c2b 114
teekiansek 0:8d245bbd9c2b 115 int main() {
teekiansek 0:8d245bbd9c2b 116
teekiansek 0:8d245bbd9c2b 117 while (1) {
teekiansek 0:8d245bbd9c2b 118
teekiansek 0:8d245bbd9c2b 119
teekiansek 0:8d245bbd9c2b 120 sw=button_delay(button);
teekiansek 0:8d245bbd9c2b 121 led1=sw;
teekiansek 0:8d245bbd9c2b 122
teekiansek 0:8d245bbd9c2b 123 if (sw == false and no == 0) {
teekiansek 0:8d245bbd9c2b 124 led3=1;
teekiansek 0:8d245bbd9c2b 125 no=search();
teekiansek 0:8d245bbd9c2b 126 lcd.locate(0,1);
teekiansek 0:8d245bbd9c2b 127 lcd.printf("it is %d", no-1);
teekiansek 0:8d245bbd9c2b 128 sprintf(next_file, "/local/temp%d.csv", file_no-1);
teekiansek 0:8d245bbd9c2b 129 }
teekiansek 0:8d245bbd9c2b 130
teekiansek 0:8d245bbd9c2b 131
teekiansek 0:8d245bbd9c2b 132 if (sw == true and no != 0) {
teekiansek 0:8d245bbd9c2b 133 no=0;
teekiansek 0:8d245bbd9c2b 134 led3=0;
teekiansek 0:8d245bbd9c2b 135
teekiansek 0:8d245bbd9c2b 136 FILE *fp = fopen(next_file, "w");
teekiansek 0:8d245bbd9c2b 137 //while (button) {
teekiansek 0:8d245bbd9c2b 138 while (button_delay(button)) {
teekiansek 0:8d245bbd9c2b 139 led2 = !led2;
teekiansek 0:8d245bbd9c2b 140 // time,data<cr>
teekiansek 0:8d245bbd9c2b 141 fprintf(fp,"%.2f,%.2f,%.2f,%.2f,%.2f\n",grx.read()*3.3, gry.read()*3.3,acx.read()*3.3,acy.read()*3.3,acz.read()*3.3);
teekiansek 0:8d245bbd9c2b 142 //pc.printf("%f,%f,%f\n",acx.read(),acy.read(),acz.read());
teekiansek 0:8d245bbd9c2b 143 lcd.locate(0,0);
teekiansek 0:8d245bbd9c2b 144 lcd.printf("gx=%.2f,gy=%.2f",grx.read()*3.3, gry.read()*3.3);
teekiansek 0:8d245bbd9c2b 145 //lcd.printf("%.2f", f);
teekiansek 0:8d245bbd9c2b 146 lcd.locate(0,1);
teekiansek 0:8d245bbd9c2b 147 lcd.printf("ax=%.2f,ay=%.2f,az=%.2f",acx.read()*3.3,acy.read()*3.3,acz.read()*3.3);
teekiansek 0:8d245bbd9c2b 148 wait (.01);
teekiansek 0:8d245bbd9c2b 149 }
teekiansek 0:8d245bbd9c2b 150 fclose(fp);
teekiansek 0:8d245bbd9c2b 151 // lcd.cls();
teekiansek 0:8d245bbd9c2b 152 //lcd.locate(0,0);
teekiansek 0:8d245bbd9c2b 153 ///lcd.printf("Press button to start");
teekiansek 0:8d245bbd9c2b 154 // wait(.1);
teekiansek 0:8d245bbd9c2b 155 }
teekiansek 0:8d245bbd9c2b 156 }
teekiansek 0:8d245bbd9c2b 157 }
teekiansek 0:8d245bbd9c2b 158
teekiansek 0:8d245bbd9c2b 159
teekiansek 0:8d245bbd9c2b 160