2021.8.17 Arduino 関数について

本日のTOPIC

今回は、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;で戻り値として返します。

以上が、関数のおおまかな内容です。

今日は、ここまで。

カテゴリーblog

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA