wind logger
Dependencies: SDFileSystem TextLCD mbed
Fork of windmeter4receive by
Diff: main.cpp
- 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