修正済みby皆川

Dependencies:   mbed Servo cansat_integrated_2 BMP180

Dependents:   cansat_integrated_2

Committer:
minanao
Date:
Thu Oct 21 01:58:35 2021 +0000
Revision:
0:e7b7def631c2
Child:
3:a583276d9fef
integrated program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
minanao 0:e7b7def631c2 1 #include "mbed.h"
minanao 0:e7b7def631c2 2
minanao 0:e7b7def631c2 3 //nの階乗を計算する関数
minanao 0:e7b7def631c2 4 int fact(int n)
minanao 0:e7b7def631c2 5 {
minanao 0:e7b7def631c2 6 int i, result = 1;
minanao 0:e7b7def631c2 7
minanao 0:e7b7def631c2 8 if(n == 0)
minanao 0:e7b7def631c2 9 return 1;
minanao 0:e7b7def631c2 10 else
minanao 0:e7b7def631c2 11 {
minanao 0:e7b7def631c2 12 for(i = 1;i <= n;i++)
minanao 0:e7b7def631c2 13 {
minanao 0:e7b7def631c2 14 result *= i;
minanao 0:e7b7def631c2 15 }
minanao 0:e7b7def631c2 16 return result;
minanao 0:e7b7def631c2 17 }
minanao 0:e7b7def631c2 18 }
minanao 0:e7b7def631c2 19
minanao 0:e7b7def631c2 20 float my_pow(float x, int n)
minanao 0:e7b7def631c2 21 {
minanao 0:e7b7def631c2 22 int i;
minanao 0:e7b7def631c2 23 float pow_result = 1;
minanao 0:e7b7def631c2 24
minanao 0:e7b7def631c2 25 if(n == 0)
minanao 0:e7b7def631c2 26 return 1;
minanao 0:e7b7def631c2 27 else
minanao 0:e7b7def631c2 28 {
minanao 0:e7b7def631c2 29 for(i = 0;i < n;i++)
minanao 0:e7b7def631c2 30 {
minanao 0:e7b7def631c2 31 pow_result *= x;
minanao 0:e7b7def631c2 32 }
minanao 0:e7b7def631c2 33 return pow_result;
minanao 0:e7b7def631c2 34 }
minanao 0:e7b7def631c2 35 }
minanao 0:e7b7def631c2 36
minanao 0:e7b7def631c2 37 float my_exp(float x)
minanao 0:e7b7def631c2 38 {
minanao 0:e7b7def631c2 39 int i;
minanao 0:e7b7def631c2 40 float result = 0;
minanao 0:e7b7def631c2 41
minanao 0:e7b7def631c2 42
minanao 0:e7b7def631c2 43 for(i = 1;i <= 25; i++)
minanao 0:e7b7def631c2 44 {
minanao 0:e7b7def631c2 45 result += my_pow(x, i) / fact(i);
minanao 0:e7b7def631c2 46 }
minanao 0:e7b7def631c2 47
minanao 0:e7b7def631c2 48 return result + 1;
minanao 0:e7b7def631c2 49 }
minanao 0:e7b7def631c2 50
minanao 0:e7b7def631c2 51 float my_log(float x)
minanao 0:e7b7def631c2 52 {
minanao 0:e7b7def631c2 53 int i;
minanao 0:e7b7def631c2 54 float result1, result2;
minanao 0:e7b7def631c2 55
minanao 0:e7b7def631c2 56 x -= 1;
minanao 0:e7b7def631c2 57 result1 = 0;
minanao 0:e7b7def631c2 58 result2 = 0;
minanao 0:e7b7def631c2 59
minanao 0:e7b7def631c2 60 for(i = 1;i <= 40;i++)
minanao 0:e7b7def631c2 61 {
minanao 0:e7b7def631c2 62 if(i % 2 == 1)
minanao 0:e7b7def631c2 63 result1 += my_pow(x, i) / i;
minanao 0:e7b7def631c2 64 else
minanao 0:e7b7def631c2 65
minanao 0:e7b7def631c2 66 result2 += my_pow(x, i) / i;
minanao 0:e7b7def631c2 67 }
minanao 0:e7b7def631c2 68
minanao 0:e7b7def631c2 69 return result1 - result2;
minanao 0:e7b7def631c2 70 }
minanao 0:e7b7def631c2 71
minanao 0:e7b7def631c2 72 //累乗
minanao 0:e7b7def631c2 73 float mypow(float x, float y)
minanao 0:e7b7def631c2 74 {
minanao 0:e7b7def631c2 75 return my_exp(y * my_log(x));
minanao 0:e7b7def631c2 76 }
minanao 0:e7b7def631c2 77
minanao 0:e7b7def631c2 78 //高度計算
minanao 0:e7b7def631c2 79 float calculate_h(float dP0FIX,float dp,float dt){
minanao 0:e7b7def631c2 80 float dpow = 1.0/5.256;
minanao 0:e7b7def631c2 81 float dP0 = 1013.25;
minanao 0:e7b7def631c2 82 float a = (dt+(float)273.15)/(float)0.0065;
minanao 0:e7b7def631c2 83 float s = (mypow(dP0/dp,dpow)- mypow(dP0/dP0FIX,dpow))*a - 27;
minanao 0:e7b7def631c2 84 return s;
minanao 0:e7b7def631c2 85 }
minanao 0:e7b7def631c2 86
minanao 0:e7b7def631c2 87 //海面気圧計算
minanao 0:e7b7def631c2 88 float calculate_dp0(float dp,float dt){
minanao 0:e7b7def631c2 89 float s = dp*mypow(1 - (0.0065*27)/(dt+0.0065*27+273.15),-5.257);
minanao 0:e7b7def631c2 90 return s;
minanao 0:e7b7def631c2 91 }