static
Description :
Le mot-clé static permet de créer des variables visibles par une seule fonction. Cependant, contrairement aux variables locales qui sont créées et détruites à chaque appel de fonction, les variables static persistent au-delà de l’appel de fonction, préservant ainsi leurs données entre les appels.
Les variables déclarées static ne seront créées et initialisées qu’au premier appel de fonction.
Exemple de code :
/* RandomWalk Paul Badger 2007 RandomWalk se déplace aléatoirement de haut en bas entre deux extrémités. Le déplacement maximal dans une boucle est déterminé par le paramètre « stepsize ». Une variable statique est déplacée de haut en bas d'une valeur aléatoire. Cette technique est également connue sous le nom de « bruit rose » et de « marche ivre ». */ #define randomWalkLowRange -20 #define randomWalkHighRange 20 int stepsize; int thisTime; void setup() { Serial.begin(9600); } void loop() { // tester la fonction randomWalk stepsize = 5; thisTime = randomWalk(stepsize); Serial.println(thisTime); delay(10); } int randomWalk(int moveSize) { static int place; // variable pour stocker la valeur dans une marche aléatoire - déclarée statique pour qu'elle stocke // valeurs entre les appels de fonction, mais aucune autre fonction ne peut modifier sa valeur place = place + (random(-moveSize, moveSize + 1)); if (place < randomWalkLowRange) { // vérifier les limites inférieures et supérieures place = randomWalkLowRange + (randomWalkLowRange - place); // refléter le nombre dans le sens positif } else if (place > randomWalkHighRange) { place = randomWalkHighRange - (place - randomWalkHighRange); // refléter le nombre dans le sens négatif } return place; }
Source : https://docs.arduino.cc/language-reference/en/variables/variable-scope-qualifiers/static/