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/
