Fonction static int

Bonjour j'ai récupérer un programme et je voudrais l'adapté pour moi mais je ne comprend pas une fonction dans le programme c'est pour le "static int" je vous met la partie de code concernant mon problème

void loop() {
  static int testPrecedent1 = LOW;
  static int testPrecedent2 = LOW;
  static int testPrecedent3 = LOW;
  static int testPrecedent4 = LOW;
  static int testPrecedent5 = LOW;
  static int testPrecedent6 = LOW;
  static int testPrecedent7 = LOW;
  static int testPrecedent8 = LOW;
  static int testPrecedent9 = LOW;

  int test1 = digitalRead(BP);//test est égal à l'etat du bp1
  if (test1 == HIGH && testPrecedent1 == LOW)
    CAN.sendMsgBuf(0x00, 0, 8, bp1);// envoyé données:  id = 0x00, tram standars car 0, longueur de la tram = 8, bp1: contenu du message
  testPrecedent1 = test1;

  int test2 = digitalRead(BP2);//test est égal à l'etat du bp2
  if (test2 == HIGH && testPrecedent2 == LOW)
    CAN.sendMsgBuf(0x01, 0, 8, bp2);// envoyé données:  id = 0x01, tram standars car 0, longueur de la tram = 8, bp2: contenu du message
  testPrecedent2 = test2;

  int test3 = digitalRead(BP3);//test est égal à l'etat du bp3
  if (test3 == HIGH && testPrecedent3 == LOW)
    CAN.sendMsgBuf(0x02, 0, 8, bp3);// envoyé données:  id = 0x02, tram standars car 0, longueur de la tram = 8, bp3: contenu du message
  testPrecedent3 = test3;

merci d'avance

Bonjour,

static indique que la variable est implanté statiquement(à une adresse fixe dans la mémoire), c'est à dire que sa valeur persiste entre chaque appel à loop(). Si on n'indique pas static, la variable est implantée dans la pile et sa valeur est détruite en sortie de la fonction.

Si on veut mémoriser l'état précédent, il faut donc que la variable soit static.