Static - Arduino IDE

Ключевое слово static используется для создания переменных, которые будут видны только одной функции. Однако, в отличие от локальных переменных, которые создаются и уничтожаются при каждом вызове функции, переменные static сохраняют свое значение между вызовами.

Переменные, объявленные как static, создаются и инициализируются только при первом вызове функции.

Пример:

* RandomWalk
* Paul Badger 2007
* RandomWalk в случайном порядке перемещается вверх или вниз между двумя
* точками. Длина максимального перемещения за один цикл задается 
* параметром "stepsize".
* Статическая переменная увеличивается или уменьшается на случайную величину.
* Эта техника также известна как "розовый шум" или "пьяная походка".
*/
#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;
int thisTime;
int total;
void setup()
{
  Serial.begin(9600);
}
void loop()
{        //  функция randomWalk 
  stepsize = 5;
  thisTime = randomWalk(stepsize);
  Serial.println(thisTime);
   delay(10);
}
int randomWalk(int moveSize){
  static int  place;     // переменная для хранения величины случайного перемещения - объявлена как static, поэтому 
                         // сохраняет свое значение между вызовами функции. При этом другие функции не могут ее изменить
  place = place + (random(-moveSize, moveSize + 1));
  if (place < randomWalkLowRange){                    // проверка нижнего и верхнего пределов
    place = place + (randomWalkLowRange - place);     // восстановление числа в положительном направлении
  }
  else if(place > randomWalkHighRange){
    place = place - (place - randomWalkHighRange);     // восстановление числа в отрицательном направлении
  }
  return place;
}

Вернуться в справочник Arduino.

Разработка проектов