Loading...

Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison

Static


Description

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.

Exemple


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

Commentaires utilisateurs

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.