static

スポンサーリンク

Arduinoにおける文法は標準C言語と特に変わりはありません。
スタティック変数は、関数が初めて呼ばれたときに1度だけ生成、その後 関数が繰り返し呼ばれる間も値が保存されます。

●Example from Arduino Web Site

[c]
/* 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; // variable to store value in random walk – declared static so that it stores
// values in between function calls, but no other functions can change its value

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

if (place < randomWalkLowRange){ // check lower and upper limits
place = place + (randomWalkLowRange – place); // reflect number back in positive direction
}
else if(place > randomWalkHighRange){
place = place – (place – randomWalkHighRange); // reflect number back in negative direction
}

return place;
}

[/c]

Arduino 原文

タイトルとURLをコピーしました