Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

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 ou à l'adresse suivante : support_at_mon-club-elec_point_fr

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-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.