Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison
Le mot-clé static est utilisé pour créer des variables qui sont visibles uniquement dans une fonction. A la différence des variables locales qui sont détruites et créées à chaque fois qu'une fonction est appelée, les variables static persistent au-delà de l'appel de la fonction, conservant leurs données entre deux appels de la fonction.
Les variables déclarées à l'aide du mot-clé static peuvent être créées et initialisées seulement la première fois que la fonction est appelée.
/* Marche au hasard
* Paul Badger 2007
* Marche au hasard erre entre deux limites
* Le mouvement maximum dans une boucle est régit par
* le paramètre "stepsize"
* Une variable statique évolue de part et d'autre d'une quantité aléatoire
* Cette techniqe est également connue comme le "bruit rose" ou "la marche ébrieuse"
*/
#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize; // déclare variable globale
int thisTime; // déclare variable globale
int total; // déclare variable globale
void setup()
{
Serial.begin(9600); // initialise connexion série
}
void loop()
{ // test 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 la fonction - déclarée avec static et donc conserve la
// valeur entre 2 appels de la fonction et aucune autre fonction ne peut changer sa valeur.
place = place + (random(-moveSize, moveSize + 1));
if (place < randomWalkLowRange){ // fixe limites haute etbasse
place = place + (randomWalkLowRange - place); // direction positive
}
else if(place > randomWalkHighRange){
place = place - (place - randomWalkHighRange); //direction négative
}
return place;
}
Aucun commentaire
Page d'accueil de la référence Arduino en français
Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.
Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.
La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.