Home Page | Language Reference (extended) | SD Reference | Libraries | Comparison | Changes
The static keyword is used to create variables that are visible to only one function. However unlike local variables that get created and destroyed every time a function is called, static variables persist beyond the function call, preserving their data between function calls.
Variables declared as static will only be created and initialized the first time a function is called.
/* 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 20int stepsize;int thisTime;int total;void setup(){Serial.begin(9600);}void loop(){ // tetst randomWalk functionstepsize = 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 valueplace = place + (random(-moveSize, moveSize + 1));if (place < randomWalkLowRange){ // check lower and upper limitsplace = 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;}
Corrections, suggestions, and new documentation should be posted to the Forum.
The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.