narumi tatsuya
/
motor_sample
ルンパッパ
Diff: main.cpp
- Revision:
- 3:3a62c5ccfddb
- Parent:
- 2:20304b3cea67
- Child:
- 4:443e82b039ba
diff -r 20304b3cea67 -r 3a62c5ccfddb main.cpp --- a/main.cpp Thu Dec 17 13:32:46 2020 +0000 +++ b/main.cpp Fri Dec 18 11:43:47 2020 +0000 @@ -10,7 +10,8 @@ Serial pc(SERIAL_TX,SERIAL_RX,921600);//通信 Serial xbee(D1,D0);//Xbeeのピン -DigitalOut FET(D9);//FETのピン +DigitalOut FET1(D9);//FETのピン +DigitalOut FET2(D8); DigitalIn flight(D6); //フライトピンのピン DigitalOut SW(D7);//フライトピンの電圧降下ピン TB6612 motor(D7,D9,D11);//モータードライバーのピン @@ -18,8 +19,9 @@ int main(){ - float x8; - FET=0; + float avalt,x8; + FET1=0; + FET2=0; SW=1; flight==1;//フライトピンがついている @@ -36,6 +38,8 @@ else{ SW = 0; + FET2=1; + wait(25); xbee.printf("やったぞおおおおおおおおお!\n"); break; @@ -45,6 +49,7 @@ BMP180 bmp180(PIN_SDA,PIN_SCL); float pressure,temperature,altitude;//気圧,気温,高度 int n; + int t=0; xbee.printf("\rstart!\n\r");//気圧センサースタート bmp180.Initialize(27,BMP180_OSS_ULTRA_HIGH_RESOLUTION);//27は府大の海抜高度 xbee.printf("initialization complete!\n\r");//初期化完了 @@ -52,17 +57,22 @@ while(1){ if(bmp180.ReadData(&temperature,&pressure)){ float x4,x5,x6,x7,a,b; - a = pressure; + float sum=0,altitude[11]; + for(int p=1;p<11;p++){ + a = pressure; b = temperature; x4 = 1019.11 / a; //海面気圧を気圧でわる x5 = powf(x4, 0.1902225); //5.257ぶんの1 x6 = 273.15 + b; //絶対温度 x7 = (x5 - 1) * x6; x8 = x7 / 0.0065; - altitude = x8; + altitude[p] = x8; + sum=sum+altitude[p]; + } + avalt=sum/10; - xbee.printf("Altitude(m)\t:%.3f\n\r",altitude); + xbee.printf("Altitude(m)\t:%.3f\n\r",avalt); xbee.printf("--------------------------------\n\r"); wait(3); break; @@ -77,7 +87,10 @@ if(bmp180.ReadData(&temperature,&pressure)){ float y4,y5,y6,y7,y8,c,d; float speed; - + float s=0; + float alti[11]; + float average_alti; + for(int q=1;q<11;q++){ c = pressure; d = temperature; y4 = 1019.11 / c; //海面気圧を気圧でわる @@ -85,28 +98,33 @@ y6 = 273.15 + d; y7 = (y5 - 1) * y6; y8 = y7 / 0.0065; - altitude = y8; - speed = (x8 - y8)/(float)(3+n);//値が取得でた場合は,3秒間の速さをだし,値が取得できなかった場合は3+n秒(nは値が取得できなかった回数)の速さをだす + alti[q]= y8; + s=s+alti[q]; + } + average_alti=s/10; + speed = (avalt - average_alti)/(float)(3+n);//値が取得でた場合は,3秒間の速さをだし,値が取得できなかった場合は3+n秒(nは値が取得できなかった回数)の速さをだす - xbee.printf("Altitude(m)\t:%.3f\n\r",altitude); + xbee.printf("Altitude(m)\t:%.3f\n\r",average_alti); xbee.printf("Speed(m/s)\t:%.3f\n\r",speed); - xbee.printf("--------------------------------\n\r"); + xbee.printf("-------------------------------\n\r"); x8 = y8; n=0; wait(3); - if(speed<=0){ - break; + if(speed<=0.5){ + t++; } - }else{ - xbee.printf("NO DATA\n\r"); + }else{xbee.printf("NO DATA\n\r"); ++n; wait(1); } + if(t=3){ + break; + } } - /*speedが0以下になったらFETに20秒電流を流してその後電流を止める*/ - FET=1; -wait(20); -FET=0; + /*speedが3回0.5m/sになったらFETに20秒電流を流してその後電流を止める*/ + FET1=1; +wait(10); +FET1=0; motor = 100; double a; double b; @@ -119,17 +137,19 @@ /*a,bを緯度経度の初期値で初期化*/ a=gps.latitude; b=gps.longitude; - xbee.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示 + /* xbee.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示 xbee.printf("--------------------------------\n\r"); - break; + xbee.printf("ドジャース"); + break;*/ }else{ xbee.printf("Fault_No_Data\r\n"); + xbee.printf("メノクラゲ"); wait(1); } } while(1){ if(gps.getgps()){ - xbee.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示 + //xbee.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示 xbee.printf("--------------------------------\n\r"); /*ここから距離の計算*/