math.hライブラリ
math.hは、多数の数学的関数を含むライブラリです。
よく使う数学的関数を中心に、以下図1に示す19種の関数についてプログラムを書いたものを図2に示します。
図1:「math.hライブラリ」主要数学的関数をArduinoUNOで実行した結果
今回は私の独断と偏見で特に使いそうな関数19種類について、サンプルプログラムを書いてみました!
double A=1;
double X=3;
double Y=7;
double Z=12.345;
int *iptr;
void setup() {Serial.begin(9600);} //9600bpsでシリアルポートを開く
void loop() {
//sin:xの正弦を返します
Serial.println(sin(X)); //計算値:sin(3) = 0.14
double X=3;
double Y=7;
double Z=12.345;
int *iptr;
void setup() {Serial.begin(9600);} //9600bpsでシリアルポートを開く
void loop() {
//sin:xの正弦を返します
Serial.println(sin(X)); //計算値:sin(3) = 0.14
//asin:xの逆正弦を返します
Serial.println(asin(A)); //計算値:asin(1) = 1.57
//fabs:floatの絶対値を返します
Serial.println(fabs(X)); //計算値:fabs(3) = 3.00
//modf:Zを整数部(*iptrアドレスに格納)と、小数部(戻り値)に分割します
Serial.println(modf(Z,*iptr),3); //計算値:modf(12.345) = 0.345
//exp:xの指数関数値を返します
Serial.println(exp(X)); //計算値:exp(3) = 20.09
//log:xの自然対数を返します
Serial.println(log(X)); //計算値:log(3) = 1.10
//log10:基数10のxの対数を返します
Serial.println(log10(X)); //計算値:log10(3) = 0.48
Serial.println(log10(X)); //計算値:log10(3) = 0.48
//pow:xのy乗を返します
Serial.println(pow(X,Y)); //計算値:pow(3,7) = 2187.00
//square:xの二乗を返します
Serial.println(square(X)); //計算値:square(3) = 9.00
//fmax:xとyを比較し、大きい方の値を返します
Serial.println(fmax(X,Y)); //計算値:fmax(3,7) = 7.00
//fmin:xとyを比較し、小さい方の値を返します
Serial.println(fmin(X,Y)); //計算値:fmin(3,7) = 3.00
//round:Z小数点以下を丸めます
Serial.println(round(Z)); //計算値:round(12.345) = 12}
図2:プログラムの内容
ArduinoIDEが、これだけの数学的関数をサポートしている事は割と最近まで知りませんでした