wind logger

Dependencies:   SDFileSystem TextLCD mbed

Fork of windmeter4receive by Jumpei Oguro

Revision:
1:4810436d9e48
Parent:
0:36c080f46ab1
--- a/main.cpp	Fri Aug 08 08:41:02 2014 +0000
+++ b/main.cpp	Fri Aug 08 10:25:27 2014 +0000
@@ -28,27 +28,22 @@
   
   
   //wind data value
-  char wind_data[256];
-  float windvel_5min_ave,windvel_5sec_ave;
-  float winddeg_5sec_ave=0.0,winddeg_5min_ave=0.0;
-  char winddeg_5min_ave_c[4],winddeg_5sec_ave_c[4];
-  //strcpy(winddeg_5sec_ave_c,"    ");
-  //strcpy(winddeg_5min_ave_c,"    ");
-  //float year,month,day;
-  //char time[8];
-  //float pre,temp;
   int i=0;
   int j=0;
   int h=0;
-  char k[2];
+  int k=0;
   
-    //Value
-    long dt = 1000000;  //1 Hz (1000000 us, 1000 ms)
-    //float time  = 0.0;
-    Timer ti;
-    long tminus = 0;
-    
-  
+  char wind_data[256];
+  float windvel_5min_ave=0.0,windvel_5sec_ave=0.0;
+  float winddeg_5sec_ave=0.0,winddeg_5min_ave=0.0;
+  char winddeg_5min_ave_c[4],winddeg_5sec_ave_c[4];
+  float winddeg,windvel;
+  float windvel_5sec[6],windvel_5min[301];
+  float winddeg_5sec[6],winddeg_5min[301];
+  for(i=0; i<=5; i++){windvel_5sec[i]=0.0; winddeg_5sec[i]=0.0;}
+  for(i=0; i<=300; i++){windvel_5min[i]=0.0; winddeg_5min[i]=0.0;}
+  char ms,check;
+
    //LCD startup
     lcd.cls();
          
@@ -58,31 +53,18 @@
     lcd.locate(0,1);
     lcd.printf("-----Ready!-----");
     wait(2);
-    //uint8_t buf[128];
+
     lcd.cls();
     lcd.locate(0,0);
     lcd.printf("------Wait------");
     lcd.locate(0,1);
     lcd.printf("----no data!----");    
-    ti.reset();
     
-     //wind parameter set
-      char wind_data[256];
-      //char winddeg_c[4];
-      char winddeg_5sec_ave_c[4],winddeg_5min_ave_c[4];
-      float winddeg,windvel;
-      float windvel_5sec[6],windvel_5min[301];
-      float winddeg_5sec[6],winddeg_5min[301];
-      float windvel_5sec_ave=0.0,windvel_5min_ave=0.0;
-      float winddeg_5sec_ave=0.0,winddeg_5min_ave=0.0;
-      for(i=0; i<=5; i++){windvel_5sec[i]=0.0; winddeg_5sec[i]=0.0;}
-      for(i=0; i<=300; i++){windvel_5min[i]=0.0; winddeg_5min[i]=0.0;}
-
     char idir[14] = "/sd/";
     char time_c[7],date_c[9];
     
-    sprintf(date_c,"%4d%2d%2d",y_date,m_date,d_date);
-    sprintf(time_c,"%2d%2d%2d",h_time,m_time,s_time);
+    //sprintf(date_c,"%4d%2d%2d",y_date,m_date,d_date);
+    //sprintf(time_c,"%2d%2d%2d",h_time,m_time,s_time);
     
     char filename[15] = "";
     strcat(filename,date_c);
@@ -106,16 +88,14 @@
     fprintf(fp, "Year,Month,Day,hh:mm:ss,wind_velocity[m/s],wind_direction[deg],wind_velocity_5sec[m/s],wind_direction_5sec[deg],wind_velocity_5min[m/s],wind_direction_5min[deg]\n");
     
     fclose(fp);   
-
+//------------------------------------------- main while loop
     while(1){
-        ti.start();
+        //先頭の文字判定
         myled1=0;
-        i=0;
-        while(xbee.getc()!='Q'){
-            lcd.locate(0,16);
-            lcd.printf("i");
-        }
-        myled1 = 1;
+        while(xbee.getc()!='Q'){}
+        myled1=1;
+        
+        //文字列終わり(改行)まで文字列格納
         i=0;
         while( (wind_data[i]=xbee.getc()) != '\r'){
             i++;
@@ -126,76 +106,73 @@
                 break;
             }
         }
+        
         myled1 = 0;
         wind_data[i]='\0';
         if(i<=256){
-              //if( sscanf(wind_data, "WAPT,%f,%f,%c,%f",&year,&month,&day,&time,&windvel_5sec_ave,&winddeg_5sec_ave_c,&windvel_5min_ave,&winddeg_5min_ave_c,&pre,&temp) >= 1)
-              //if( sscanf(wind_data, "WAPT,%f,%f,%f,%f,%s",&windvel_5sec_ave,&winddeg_5sec_ave,&windvel_5min_ave,&winddeg_5min_ave,&k) >= 1)
-              if( sscanf(wind_data, ",%f,%f,%c,%f",&winddeg,&windvel,&ms,&check) >= 1){
-                if( check == 0 ){ 
+          if( sscanf(wind_data, ",%f,%f,%c,%f",&winddeg,&windvel,&ms,&check) >= 1){
+             if( check == 0 ){ 
                 windvel_5sec[j] = windvel;
                 winddeg_5sec[j] = winddeg;
                 windvel_5min[k] = windvel;
                 winddeg_5min[k] = winddeg;
                 
-                    j++;
-                    k++;
-          
-                    if(j==5){j=1;}
-                    if(k==300){k=1;}
+                j++;
+                k++;
+                if(j==5){j=1;}
+                if(k==300){k=1;}
               
                 for(i=1; i<=5; i++){windvel_5sec_ave +=windvel_5sec[i];}
-                  for(i=1; i<=5; i++){winddeg_5sec_ave +=winddeg_5sec[i];}
-                  windvel_5sec_ave /= 5.0;
-                  winddeg_5sec_ave /= 5.0;
-                  for(i=1; i<=300; i++){windvel_5min_ave +=windvel_5min[i];}
-                  for(i=1; i<=300; i++){winddeg_5min_ave +=winddeg_5min[i];}
-                  windvel_5min_ave /= 300.0;
-                  winddeg_5min_ave /= 300.0;
-                  if(winddeg_5sec_ave>348.75 || winddeg_5sec_ave<=11.25){strcpy(winddeg_5sec_ave_c,"N  ");}
-                  if(winddeg_5sec_ave>11.25 && winddeg_5sec_ave<=33.75){strcpy(winddeg_5sec_ave_c,"NNE");}
-                  if(winddeg_5sec_ave>33.75 && winddeg_5sec_ave<=56.25){strcpy(winddeg_5sec_ave_c,"NE ");}
-                  if(winddeg_5sec_ave>56.25 && winddeg_5sec_ave<=78.75){strcpy(winddeg_5sec_ave_c,"ENE");}
-                  if(winddeg_5sec_ave>78.75 && winddeg_5sec_ave<=101.25){strcpy(winddeg_5sec_ave_c,"E  ");}
-                  if(winddeg_5sec_ave>101.25 && winddeg_5sec_ave<=123.75){strcpy(winddeg_5sec_ave_c,"ESE");}
-                  if(winddeg_5sec_ave>123.75 && winddeg_5sec_ave<=146.25){strcpy(winddeg_5sec_ave_c,"SE ");}
-                  if(winddeg_5sec_ave>146.25 && winddeg_5sec_ave<=168.75){strcpy(winddeg_5sec_ave_c,"SSE");}
-                  if(winddeg_5sec_ave>168.75 && winddeg_5sec_ave<=191.25){strcpy(winddeg_5sec_ave_c,"S  ");}
-                  if(winddeg_5sec_ave>191.25 && winddeg_5sec_ave<=213.75){strcpy(winddeg_5sec_ave_c,"SSW");}
-                  if(winddeg_5sec_ave>213.75 && winddeg_5sec_ave<=236.25){strcpy(winddeg_5sec_ave_c,"SW ");}
-                  if(winddeg_5sec_ave>236.25 && winddeg_5sec_ave<=258.75){strcpy(winddeg_5sec_ave_c,"WSW");}
-                  if(winddeg_5sec_ave>258.75 && winddeg_5sec_ave<=281.25){strcpy(winddeg_5sec_ave_c,"W  ");}
-                  if(winddeg_5sec_ave>281.25 && winddeg_5sec_ave<=303.75){strcpy(winddeg_5sec_ave_c,"WNW");}
-                  if(winddeg_5sec_ave>303.75 && winddeg_5sec_ave<=326.25){strcpy(winddeg_5sec_ave_c,"NW ");}
-                  if(winddeg_5sec_ave>326.25 && winddeg_5sec_ave<=348.75){strcpy(winddeg_5sec_ave_c,"NNW");}
-                  
-                  if(winddeg_5min_ave>348.75 || winddeg_5min_ave<=11.25){strcpy(winddeg_5min_ave_c,"N  ");}
-                  if(winddeg_5min_ave>11.25 && winddeg_5min_ave<=33.75){strcpy(winddeg_5min_ave_c,"NNE");}
-                  if(winddeg_5min_ave>33.75 && winddeg_5min_ave<=56.25){strcpy(winddeg_5min_ave_c,"NE ");}
-                  if(winddeg_5min_ave>56.25 && winddeg_5min_ave<=78.75){strcpy(winddeg_5min_ave_c,"ENE");}
-                  if(winddeg_5min_ave>78.75 && winddeg_5min_ave<=101.25){strcpy(winddeg_5min_ave_c,"E  ");}
-                  if(winddeg_5min_ave>101.25 && winddeg_5min_ave<=123.75){strcpy(winddeg_5min_ave_c,"ESE");}
-                  if(winddeg_5min_ave>123.75 && winddeg_5min_ave<=146.25){strcpy(winddeg_5min_ave_c,"SE ");}
-                  if(winddeg_5min_ave>146.25 && winddeg_5min_ave<=168.75){strcpy(winddeg_5min_ave_c,"SSE");}
-                  if(winddeg_5min_ave>168.75 && winddeg_5min_ave<=191.25){strcpy(winddeg_5min_ave_c,"S  ");}
-                  if(winddeg_5min_ave>191.25 && winddeg_5min_ave<=213.75){strcpy(winddeg_5min_ave_c,"SSW");}
-                  if(winddeg_5min_ave>213.75 && winddeg_5min_ave<=236.25){strcpy(winddeg_5min_ave_c,"SW ");}
-                  if(winddeg_5min_ave>236.25 && winddeg_5min_ave<=258.75){strcpy(winddeg_5min_ave_c,"WSW");}
-                  if(winddeg_5min_ave>258.75 && winddeg_5min_ave<=281.25){strcpy(winddeg_5min_ave_c,"W  ");}
-                  if(winddeg_5min_ave>281.25 && winddeg_5min_ave<=303.75){strcpy(winddeg_5min_ave_c,"WNW");}
-                  if(winddeg_5min_ave>303.75 && winddeg_5min_ave<=326.25){strcpy(winddeg_5min_ave_c,"NW ");}
-                  if(winddeg_5min_ave>326.25 && winddeg_5min_ave<=348.75){strcpy(winddeg_5min_ave_c,"NNW");}
+                for(i=1; i<=5; i++){winddeg_5sec_ave +=winddeg_5sec[i];}
+                windvel_5sec_ave /= 5.0;
+                winddeg_5sec_ave /= 5.0;
+                for(i=1; i<=300; i++){windvel_5min_ave +=windvel_5min[i];}
+                for(i=1; i<=300; i++){winddeg_5min_ave +=winddeg_5min[i];}
+                windvel_5min_ave /= 300.0;
+                winddeg_5min_ave /= 300.0;
+                if(winddeg_5sec_ave>348.75 || winddeg_5sec_ave<=11.25){strcpy(winddeg_5sec_ave_c,"N  ");}
+                if(winddeg_5sec_ave>11.25 && winddeg_5sec_ave<=33.75){strcpy(winddeg_5sec_ave_c,"NNE");}
+                if(winddeg_5sec_ave>33.75 && winddeg_5sec_ave<=56.25){strcpy(winddeg_5sec_ave_c,"NE ");}
+                if(winddeg_5sec_ave>56.25 && winddeg_5sec_ave<=78.75){strcpy(winddeg_5sec_ave_c,"ENE");}
+                if(winddeg_5sec_ave>78.75 && winddeg_5sec_ave<=101.25){strcpy(winddeg_5sec_ave_c,"E  ");}
+                if(winddeg_5sec_ave>101.25 && winddeg_5sec_ave<=123.75){strcpy(winddeg_5sec_ave_c,"ESE");}
+                if(winddeg_5sec_ave>123.75 && winddeg_5sec_ave<=146.25){strcpy(winddeg_5sec_ave_c,"SE ");}
+                if(winddeg_5sec_ave>146.25 && winddeg_5sec_ave<=168.75){strcpy(winddeg_5sec_ave_c,"SSE");}
+                if(winddeg_5sec_ave>168.75 && winddeg_5sec_ave<=191.25){strcpy(winddeg_5sec_ave_c,"S  ");}
+                if(winddeg_5sec_ave>191.25 && winddeg_5sec_ave<=213.75){strcpy(winddeg_5sec_ave_c,"SSW");}
+                if(winddeg_5sec_ave>213.75 && winddeg_5sec_ave<=236.25){strcpy(winddeg_5sec_ave_c,"SW ");}
+                if(winddeg_5sec_ave>236.25 && winddeg_5sec_ave<=258.75){strcpy(winddeg_5sec_ave_c,"WSW");}
+                if(winddeg_5sec_ave>258.75 && winddeg_5sec_ave<=281.25){strcpy(winddeg_5sec_ave_c,"W  ");}
+                if(winddeg_5sec_ave>281.25 && winddeg_5sec_ave<=303.75){strcpy(winddeg_5sec_ave_c,"WNW");}
+                if(winddeg_5sec_ave>303.75 && winddeg_5sec_ave<=326.25){strcpy(winddeg_5sec_ave_c,"NW ");}
+                if(winddeg_5sec_ave>326.25 && winddeg_5sec_ave<=348.75){strcpy(winddeg_5sec_ave_c,"NNW");}
+                
+                if(winddeg_5min_ave>348.75 || winddeg_5min_ave<=11.25){strcpy(winddeg_5min_ave_c,"N  ");}
+                if(winddeg_5min_ave>11.25 && winddeg_5min_ave<=33.75){strcpy(winddeg_5min_ave_c,"NNE");}
+                if(winddeg_5min_ave>33.75 && winddeg_5min_ave<=56.25){strcpy(winddeg_5min_ave_c,"NE ");}
+                if(winddeg_5min_ave>56.25 && winddeg_5min_ave<=78.75){strcpy(winddeg_5min_ave_c,"ENE");}
+                if(winddeg_5min_ave>78.75 && winddeg_5min_ave<=101.25){strcpy(winddeg_5min_ave_c,"E  ");}
+                if(winddeg_5min_ave>101.25 && winddeg_5min_ave<=123.75){strcpy(winddeg_5min_ave_c,"ESE");}
+                if(winddeg_5min_ave>123.75 && winddeg_5min_ave<=146.25){strcpy(winddeg_5min_ave_c,"SE ");}
+                if(winddeg_5min_ave>146.25 && winddeg_5min_ave<=168.75){strcpy(winddeg_5min_ave_c,"SSE");}
+                if(winddeg_5min_ave>168.75 && winddeg_5min_ave<=191.25){strcpy(winddeg_5min_ave_c,"S  ");}
+                if(winddeg_5min_ave>191.25 && winddeg_5min_ave<=213.75){strcpy(winddeg_5min_ave_c,"SSW");}
+                if(winddeg_5min_ave>213.75 && winddeg_5min_ave<=236.25){strcpy(winddeg_5min_ave_c,"SW ");}
+                if(winddeg_5min_ave>236.25 && winddeg_5min_ave<=258.75){strcpy(winddeg_5min_ave_c,"WSW");}
+                if(winddeg_5min_ave>258.75 && winddeg_5min_ave<=281.25){strcpy(winddeg_5min_ave_c,"W  ");}
+                if(winddeg_5min_ave>281.25 && winddeg_5min_ave<=303.75){strcpy(winddeg_5min_ave_c,"WNW");}
+                if(winddeg_5min_ave>303.75 && winddeg_5min_ave<=326.25){strcpy(winddeg_5min_ave_c,"NW ");}
+                if(winddeg_5min_ave>326.25 && winddeg_5min_ave<=348.75){strcpy(winddeg_5min_ave_c,"NNW");}
                       
-          if(h>=9) {h=0;}
-          else {h++;}       
-          lcd.cls();
-          lcd.locate(0,0);
-          lcd.printf("5s:%5.2fm/s %s",windvel_5sec_ave,winddeg_5sec_ave_c);
-          lcd.locate(0,1);
-          lcd.printf("5m:%5.2fm/s %s%d",windvel_5min_ave,winddeg_5min_ave_c,h);
-                //lcd.locate(0,1);        
-                //lcd.printf("%6.2f hPa %4.2f ",Press[0]/100.0,Press[1]);
-              }
+                if(h>=9) {h=0;}
+                else {h++;}       
+          
+                lcd.cls();
+                lcd.locate(0,0);
+                lcd.printf("5s:%5.2fm/s %s",windvel_5sec_ave,winddeg_5sec_ave_c);
+                lcd.locate(0,1);
+                lcd.printf("5m:%5.2fm/s %s%d",windvel_5min_ave,winddeg_5min_ave_c,h);
+              }//end if check
               else
               {
                 lcd.cls();
@@ -204,16 +181,19 @@
                 lcd.locate(0,1);
                 lcd.printf("Data read  Error");                
               }
-        }
+          } //end if sscanf
+        } //end if i<=256
         strcpy(winddeg_5sec_ave_c,"    ");
         strcpy(winddeg_5min_ave_c,"    ");
         for(i=0; i<=256; i++) wind_data[i] = 0;
-    }
-    
+    }//end while(1)
+//---------------------------------------main while loop end
+/*
     while(1) {
         myled1 = 1;
         wait(0.2);
         myled1 = 0;
         wait(0.2);
     }
+*/
 }
\ No newline at end of file