Arduinoリファレンス

Arduinoリファレンスの日本語訳のページです
garretlab
static

説明

関数の中で宣言される変数を、staticを使って宣言すると、自動変数と同様に、その関数の中からだけ参照可能な変数を作成する。staticを使って宣言された変数は、自動変数とは異なり、静的記憶域期間を持つ。すなわち、関数が呼ばれるたびに生成され、関数が終了するときに削除される自動変数とは異なり、static変数は、関数が終了した後も、その値は保持され続ける。

staticと宣言された変数は、プログラム開始処理前に一度だけ初期化される。

/* RandomWalk
* Paul Badger 2007
* RandomWalk wanders up and down randomly between two
* endpoints. The maximum move in one loop is governed by
* the parameter "stepsize".
* A static variable is moved up and down a random amount.
* This technique is also known as "pink noise" and "drunken walk".
*/

#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;

int thisTime;
int total;

void setup()
{
  Serial.begin(9600);
}

void loop()
{        //  tetst randomWalk function
  stepsize = 5;
  thisTime = randomWalk(stepsize);
  Serial.println(thisTime);
   delay(10);
}

int randomWalk(int moveSize){
  static int  place;     // random walkで値を格納する変数。staticと宣言されているので、関数が終了しても値は変わらない。
                         // しかし、他の関数は値を変えることはできない。

  place = place + (random(-moveSize, moveSize + 1));

  if (place < randomWalkLowRange){                 // 上限と下限とをチェックする。
    place = place + (randomWalkLowRange - place);     // 正方向への移動
  }
  else if(place > randomWalkHighRange){
    place = place - (place - randomWalkHighRange);    // 負方向への移動
  }

  return place;
}

訳者註

staticの説明は、オリジナルのページの説明とかなり変えました。

バージョン

Arduino 1.8.3

オリジナルのページ

https://www.arduino.cc/en/Reference/Static



メニューを表示するためにJavaScriptを有効にしてください。

inserted by FC2 system