Mise à jour le 08/03/2020 : Explications et applications de la boucle while et do-while, dans le fonctionnement et la validation d’un bouton poussoir pour continuer l’exécution d’un programme
Sommaire :
- Comment attendre la validation d’une touche pour continuer l’exécution d’un programme avec while?
- Code pour appréhender le fonctionnement de la boucle While
- Version optimisée du code pour la boucle While
- Utilisation de la boucle do – while pour attendre la validation d’une touche
- Utilisation de while et goto pour attendre la validation d’une touche
- Notes et références sur les fonctions while , do-while et goto
- Pour tout probléme.
- Retour au sommaire du langage Arduino
.
Comment attendre la validation d’une touche pour continuer l’exécution d’un programme avec while? |
.
Explication du code :
Nous allons donc utiliser la boucle while pour satisfaire à cette condition. Dans le code ci-dessous tant qu’on satisfait à la condition de la boucle c’est-à-dire que la condition soit vraie, on exécute la portion de code. Pour sortir de cette boucle il faut ne plus satisfaire à la condition exigée, en l’occurrence pour nous il suffit d’appuyer sur le bouton pour que la variable passe à un et dans ce cas nous sortons de la boucle.
Description de la structure de controle while .
Une while boucle en continu, et à l’infini, jusqu’à ce que l’expression à l’intérieur de la parenthèse, () devienne fausse. Quelque chose doit changer la variable testée, sinon la boucle while ne se fermera jamais. Cela peut être dans votre code, comme une variable incrémentée, ou une condition externe, comme tester un capteur.
Code et organigramme pour appréhender le fonctionnement de la boucle
Organigramme de la boucle
.
Code de la boucle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
// // // ======================================================================= // // le 07/03/2020 // RedOhm : Mazelin Herve // // But : le programme attend qu'on valide une touche pour continuer // à s'exécuter // Programme 001 // Utilisation de la boucle While // // // ======================================================================= // déclaration de l'entrée du bouton9 branché sur la broche 9 int bouton9 = 9 ; // variable du type int pour stocker la valeur de passage du bouton9 int bouton9v; // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécutée une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while(!Serial); // lit l'état de la broche en entrée bouton9 // et met le résultat dans la variable bouton9v bouton9v = digitalRead(bouton9); // Il est possible de créer une boucle infinie avec la boucle // while, il faut impérativement que dans notre cas bouton9v // passe à l'état 1 sinon la boucle s'exécute de manière continue . while (bouton9v == 0) { Serial.print("Valeur de mon bouton => "); Serial.println(bouton9v); Serial.println("je boucle et j'attends l'appui du bouton"); delay (400); // lit l'état de la broche en entrée bouton9 // et met le résultat dans la variable bouton9v bouton9v = digitalRead(bouton9); Serial.print("Valeur de la variable bouton9v => "); Serial.println(bouton9v); } Serial.println(" " ); } // --------------------------------------------------------------------------- // Le programme principal s’exécute par une boucle infinie appelée Loop () // --------------------------------------------------------------------------- void loop() { Serial.println( "Je suis dans le programme principal"); } |
Version optimisée du code pour la boucle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
// // // ======================================================================= // // le 08/03/2020 // RedOhm : Mazelin Herve // // But : le programme attend qu'on valide une touche pour continuer // à s'exécuter // Programme 001A // Utilisation de la boucle While version optimisée // // // ======================================================================= // déclaration de l'entrée du bouton9 branché sur la broche 9 int bouton9 = 9 ; // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécutée une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while(!Serial); // Il est possible de créer une boucle infinie avec la boucle // while, il faut impérativement que dans notre cas bouton9 // passe à l'état 1 sinon la boucle s'exécute de manière continue . while ( digitalRead(bouton9)== 0) { Serial.println("je boucle et j'attends l'appui du bouton"); } } // --------------------------------------------------------------------------- // Le programme principal s’exécute par une boucle infinie appelée Loop () // --------------------------------------------------------------------------- void loop() { Serial.println( "Je suis dans le programme principal"); } |
..
Retour au sommaire
Solution 2 : utilisation de la boucle do – while pour attendre la validation d’une touche |
La boucle do / while fonctionne de la même façon que la boucle while, à la différence près que la condition est testée à la fin de la boucle.Les instructions de la boucle sont donc exécutées au moins une fois .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
// // // ======================================================================= // // le 07/03/2020 // RedOhm : Mazelin Herve // // But : le programme attend qu'on valide une touche pour continuer // à s'exécuter // programme 002 // Utilisation de la boucle do- While // // ======================================================================= // déclaration de l'entrée du bouton9 branché sur la broche 9 int bouton9 = 9 ; // variable du type int pour stocker la valeur de passage du bouton9 int bouton9v; // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécutée une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while(!Serial); // La boucle do…while est similaire à la boucle while.La différence // ici, c’est que la condition de répétabilité de la boucle est // testée à la fin de celle-ci. Donc la boucle est au minimum exécutée // une fois. do { Serial.print("Valeur de mon bouton => "); Serial.println(bouton9v); Serial.println("je boucle et j'attends l'appui du bouton"); // lit l'état de la broche en entrée bouton9 // et met le résultat dans la variable bouton9v bouton9v = digitalRead(bouton9); Serial.print("Valeur de la variable bouton9v => "); Serial.println(bouton9v); } while (bouton9v == 0); Serial.println(" " ); } // --------------------------------------------------------------------------- // Le programme principal s’exécute par une boucle infinie appelée Loop () // --------------------------------------------------------------------------- void loop() { Serial.println( "Je suis dans le programme principal"); } |
..
Retour au sommaire
Solution 3 : utilisation de while et goto pour attendre la validation d’une touche |
Description de la structure de controle while .
Les boucles while bouclent sans fin, et indéfiniment, jusqu’à ce que la condition ou l’expression entre les parenthèses devienne fausse. Quelque chose doit modifier la variable testée, sinon la boucle ne se terminera jamais.
Syntaxe
var = 0;
while (var < 200)
{
// Exemple de code , incrémentation de la valeur de la variable var
}
L’instruction goto (de l’anglais go to qui signifie en français aller à) . Elle est utilisée pour réaliser des sauts inconditionnels dans un programme, changeant ainsi le flot de contrôle naturel du programme qui consiste à aller exécuter l’instruction suivante. L’exécution est alors envoyée à une autre instruction repérée par une étiquette ou label
Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir . Voila La raison pour laquelle de nombreux programmeurs désapprouvent l’utilisation de goto est qu’avec l’utilisation illimitée de goto ,il est facile de créer des programmes qui ne pourront jamais être débogués.
Syntaxe
label:
// code
goto label; // envoie le flux du programme à l’étiquette
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
// // // ======================================================================= // // le 07/03/2020 // RedOhm : Mazelin Herve // // But : le programme attend qu'on valide une touche pour continuer // à s'exécuter // Programme 003 // // Utilisation de la boucle While et de la commande goto // // ======================================================================= // déclaration de l'entrée du bouton9 branché sur la broche 9 int bouton9 = 9 ; // variable du type int pour stocker la valeur de passage du bouton9 int bouton9v; // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécutée une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while(!Serial); // Libellé de notre étiquette pour le retour goto retour: // lit l'état de la broche en entrée bouton9 // et met le résultat dans la variable bouton9v bouton9v = digitalRead(bouton9); // Il est possible de créer une boucle infinie avec la boucle // while, il faut impérativement que dans notre cas bouton9v // passe à l'état 1 sinon la boucle s'exécute de manière continue . while (bouton9v == 0) { Serial.print("Valeur de mon bouton => "); Serial.println(bouton9v); Serial.println("je boucle et j'attends l'appui du bouton"); // pause delay (100); // L'utilisation de goto est déconseillée dans la programmation C // mais utilisé judicieusement, il peut simplifier certains programmes. // goto = aller à goto retour; } Serial.println(" " ); } // --------------------------------------------------------------------------- // Le programme principal s’exécute par une boucle infinie appelée Loop () // --------------------------------------------------------------------------- void loop() { Serial.println( "Je suis dans le programme principal"); // lit l'état de la broche en entrée bouton9 // et met le résultat dans la variable bouton9v bouton9v = digitalRead(bouton9); Serial.print("Valeur de mon bouton => "); Serial.println(bouton9v); delay (200); } |
…
Retour au sommaire.
Notes et références sur les fonctions while , do-while et goto |
Information technique :
- Site Arduino sur le traitement des contrôles du type while
- Informations sur les contrôles de type do-while
- Information et syntaxe sur le saut inconditionnel goto
Pour tout probléme |
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
.
Retour au sommaire.