今回は、ArduinoのVoid関数についてです。
Arduinoの関数とは、プログラムを機能ごとに分割し、特定の仕事をこなすモジュールを作成するといったことが簡単にできます。このモジュールの単位のことを関数(function)と呼びます。
関数には大きく分けて二種類あり、戻り値を返すタイプと返さないタイプに分かれます。
戻り値を返さない関数
まず、戻り値を返さないタイプのプログラムを下記に示します。
void 関数名(void) {
//処理内容//
}
関数名();
戻り値を返さない関数というのは、関数に何かの作業だけをさせ、その作業結果をスケッチ内で特に利用しない場合に利用します。関数に対して、作業をさせるために情報を渡す(引数と言う)場合もあります。
関数の考え方は、あらかじめ省略したい処理を、一つの関数(数式?)としてひとまとまりにして作っておけば、メインのプログラムの流れに関数の名前を入れるだけで、その処理を一通りこなしてくれるため、プログラムの見た目がシンプルになり、わかりやすくなります。
下図が、プログラムの例です。
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
pinMode(A1,INPUT);
}
void LED_ON_OFF(void) {
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
void loop() {
// put your main code here, to run repeatedly:
int a;
a=digitalRead(A1);
if(A==1){
LED_ON_OFF();
}else{
}
}
これを要約した図を下記に示します。
上の方に void LED_ON_OFF(void){ 処理 } でLEDをON/OFFするプログラムを関数化し、プログラムの途中に関数名を一言いれるだけで、関数を実行できる。
戻り値を返す関数
次に、戻り値を返すタイプのプログラムです。
戻り値があるタイプとしては、たとえば関数に計算式を入れておき、メインのプログラムから計算したいパラメータを関数に送り、関数で計算して、計算結果を戻り値として返すものです。
下記に例を示しますと、速度の計算を関数にしたいとします。
戻り値を返すタイプのプログラムの定義を示します。
int 関数名(int 変数1,int 変数2,・・・){
実行する処理
return 戻り値の変数;
}
関数名(変数1,変数2・・・);
なお、intはdoubleでも構いません。また、送り値の変数はいくつあっても大丈夫です。
メインプログラムから、距離と時間のパラメータを関数に送ります。それを関数内で計算して、計算結果(速度)を戻り値として戻すわけです。
次に、プログラム例を示します。
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
int sokudo(int d, int s) {
int a;
a=d/s;
return a;
}
void loop() {
// put your main code here, to run repeatedly:
int d;
d=105;
s=100;
x=sokudo(d,s);
Serial.println(x);
}
sokudoという名前の関数を整数型(int)で定義して、()内に送り値の距離dと時間sをintで記載し、計算結果をaに代入、これをreturn a;で戻り値として返します。
以上が、関数のおおまかな内容です。
今日は、ここまで。