La boucle FOR et l’arduino, exemple fading.

[Tutoriel] Boucle FOR et arduino, exemple fading.

Découvrons l’utilisation de la boucle FOR à travers l’exemple arduino fading. Pour cela nous piloterons une LED via une sortie analogique (tel que nous l’avons fait à ce lien) de façon à la faire s’allumer et s’éteindre progressivement (l’effet sera le même que de piloter un luminaire avec un gradateur de lumière).

La boucle FOR.

La boucle FOR a pour but d’exécuter une fonction un nombre définie de fois, et ce à intervalle régulier (ça fait un peu scolaire, mais bon…). Voila comme illustrer cela à l’aide d’un logigramme:

arduino boucle for 01

Présentation des protagonistes:

  • Compteur est la variable qui évoluera d’un pas régulier, ici 1.
  • Fin est la variable qui déterminera la valeur à laquelle sortir de la boucle.
  • Instruction 1 est la fonction à exécuter tant que la boucle FOR ne sera pas terminée.
  • Instruction 2 est la fonction qui sera exécutée lorsque l’on sera sorti de la boucle FOR.

Lisons le logigramme:

  • Nous initialisons la variable compteur à 0.
  • Nous rentrons dans une instruction qui compare si celle ci est inférieure à la variable Fin.
  • Si elle est inférieure, nous exécutons l’instruction 1, sinon nous sortons de la boucle pour exécuter l’instruction 2.
  • Si nous sommes rentré dans la boucle et que nous avons exécuter l’instruction 1, nous incrémentons notre variable compteur d’un pas fixe et prédéfini. Ici 1.
  • Puis nous revenons à la comparaison à la variable fin et exécutons la boucle jusqu’à ce que compteur deviennent supérieur ou égale à fin.

Traduction de la boucle FOR pour arduino IDE.

Le but étant donc d’initialiser une variable à une certaine valeur, la faire évoluer d’un pas fixe à chaque tour pour sortir de la boucle une fois une condition atteinte, voila la syntaxe fournie par le site officiel arduino:

for (initialization; condition; incrementation) {

//instruction(s)à exécuter;

}
  • Initialisation: Nous assignons la valeur de départ de la variable qui évoluera dans notre boucle. Notez qu’il est possible de déclarer la variable en question à cet endroit (il suffira de rajouter le type de la variable devant celle ci, exemple pour une variable nommé indexBoucle qui commencera à 0, vous mettrez à cet endroit int indexBoucle = 0).
  • Condition: La boucle s’exécutera tant que cette condition sera vrai (souvent une comparaison).
  • Incrément: La valeur (ou le pas) de laquelle évoluera la variable à chaque passage dans la boucle FOR.

Programme de l’exemple arduino Fading.

Vous trouverez le programme fading dans Fichier -> Exemples -> 03.Analog -> Fading.

arduino_exemple_fading_Menu01

Et voici le programme:

/*
Fading

This example shows how to fade an LED using the analogWrite() function.

The circuit:
* LED attached from digital pin 9 to ground.

Created 1 Nov 2008
By David A. Mellis
modified 30 Aug 2011
By Tom Igoe

http://arduino.cc/en/Tutorial/Fading

This example code is in the public domain.

*/


int ledPin = 9; // LED connected to digital pin 9

void setup() {
// nothing happens in setup
}

void loop() {
// fade in from min to max in increments of 5 points:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

// fade out from max to min in increments of 5 points:
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}
  • Lignes 1 – 18: Commentaires sur le fonctionnement du programme, son cablage et son auteur.
  • Ligne 21: On déclare une variable de type integer nommée ledPin comme étant égale à 9. Cela signifie que lorsque dans le programme nous parlerons de ledPin, cela voudra dire « borne N°9 sur laquelle est raccordée la LED ». Notez que cette borne doit etre PWM (sur la carte, il doit y avoir un ~ à coté du numéro).
    arduino borne pwm01
  • Ligne 23 – 25: La fonction setup reste vide pour ce programme.
  • Ligne 27: Debut de la boucle Loop.
  • Ligne 29: Debut de notre première boucle FOR. Nous y initialisons à 0 une variable fadeValue de type integer (vous pouvez remarquez que cette variable n’a jamais était déclarée auparavant). Nous spécifions que notre boucle FOR sera exécutée tant que fadeValue sera inférieure ou égale à 255, et qu’à chaque nouveau passage dans la boucle, nous augmenterons la valeur de fadeValue de 5. Vous aurez certainement compris que le but est d’aller de 0 à 255 par pas de 5, ce qui fait 255 / 5 = 51 passages dans la boucle.
  • Ligne 31: Nous écrivons la valeur de fadeValue dans la sortie analogique ledPin reliée à la borne 9 (petit rappel sur les sortie analogique à ce lien).
  • Ligne 33: On met le programme en pause pendant 30 millisecondes. Cela est uniquement esthétique pour éviter que la LED ne clignote trop rapidement.
  • Ligne 34: Fin de la première boucle FOR.
  • Ligne 37: Debut de la deuxième boucle FOR. Cette fois la variable qui évoluera est re-déclarée et initialisée à 255. La boucle restera active tant que fadeValue sera supérieure à 0 et nous diminuerons celle ci de 5 points à chaque nouveau passage. Vous voyez qu’ici le but n’est pas d’aller jusque 255 mais au contraire de débuter de 255 pour finir à 0.
  • Ligne 39: Comme à la ligne 31, on écrit la sortie analogique.
  • Ligne 41: Petit delay esthétique.
  • Ligne 42: Fin de la deuxième boucle FOR.
  • Ligne 43: Fin de la boucle loop.

Câblage de l’exemple arduino Fading.

Le cablage est tres simple puisqu’il suffit de cabler une LED et sa résistance en borne 9 (cliquez ici pour un rappel sur le cablage d’une LED).

arduino fading cablage 01

Conclusion sur les boucle FOR et l’arduino.

Maintenant que vous savez utiliser les boucles FOR, vous pourrez effectuer de manière condensée des actions répétitives et évoluant de façons régulières. Et si votre l’évolution de votre fonction n’est pas régulière, il faudra alors vous pencher sur la boucle WHILE (qui arrivera prochaienement).


Liens externes:

Lien de la boucle FOR vers le site arduino.

Lien vers l’exemple arduino fading.

 

About the Author: maxpeigne