Arduino - Static

Arduino

Reference Language | Libraries | Comparison | Changes

## Static

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.

#### Example

    /* 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;
    }

Reference Home

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.

### Share

### This link has expired.
Please re-subscribe to our Newsletters.

### Subscribe to our Newsletters

Email

Please enter a valid email to subscribe

Arduino Newsletter
Arduino Store Newsletter

### Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy

###### Newsletter

- ©2015 Arduino
- Copyright Notice
- Contact us
- About us
- Careers