Dans la leçon précédente, vous avez appris à utiliser les données du capteur optique dans un projet pour trier un disque par couleur. Dans cette leçon, vous vous fonderez sur ce que vous avez appris pour explorer les options de VEXcode qui permettent au projet de prendre une décision, quelle que soit la couleur détectée par le capteur optique. Vous découvrirez :
- Pourquoi l'optimisation de la prise de décision est importante dans un contexte industriel.
- La différence entre les blocs If then, Ifthen else et Else if.
Vérification de plusieurs conditions
Dans la leçon précédente, vous avez créé un projet qui pouvait trier un disque par couleur sur une palette rouge ou une palette verte. Bien que cela soit efficace, le projet ne pouvait trier qu'un disque à la fois. Dans un environnement d'usine, de nombreux objets doivent être triés et palettisés à plusieurs reprises. Afin de le faire efficacement, le bras à 6 axes doit être capable de prendre à plusieurs reprises une décision sur la façon de déplacer les objets, ou si une intervention humaine est nécessaire. Considérez les cubes que vous avez déplacés dans l'introduction au cours sur le bras à 6 axes.
Et si un Cube bleu se trouvait dans la zone de chargement ? Que se passerait-il dans le projet de la leçon précédente ? Dans un contexte industriel, toutes les conditions possibles doivent être prises en compte. Si un objet errant est mélangé aux objets à trier, une intervention humaine serait probablement nécessaire pour s'assurer que la cellule de travail et les travailleurs qui l'entourent restent en sécurité et fonctionnent efficacement.
Séquentiel Si alors bloque
Dans la leçon précédente, vous avez utilisé deux blocs Si alors dans l'ordre pour vérifier deux conditions distinctes l'une après l'autre, en posant essentiellement deux questions dans le projet.

Tout d'abord, l'objet est-il rouge ?, puis, l'objet est-il vert ?. Chaque condition est vérifiée à chaque exécution du projet, indépendamment de ce qui est détecté par le capteur optique. Bien que cette structure vous ait permis de trier efficacement un disque à la fois, ce n'est pas le moyen le plus efficace de le faire. Un disque rouge pourrait être trié, mais le capteur optique pourrait également détecter le vert de quelque chose d'autre dans l'environnement, et vice versa. Il n'y a pas non plus de considération pour un objet qui n'est ni rouge ni vert, comme un objet inattendu qui pourrait causer un problème de sécurité.
Images de flux de projet
Tout au long de cette leçon, des images expliquant le flux des projets VEXcode sont partagées. Vous pouvez recréer ces images dans votre cahier d'ingénierie tout en parcourant la leçon.
Utilisez des outils dans Google Slides ou Microsoft PowerPoint comme des flèches, des boîtes ou des organigrammes pour vous aider à créer les visualisations qui vous conviennent le mieux dans votre bloc-notes.

Séquentiel Si alors sinon bloque
Il existe un bloc différent qui pourrait être utilisé pour nous permettre à la fois de vérifier les conditions de rouge et de vert et de tenir compte d'une couleur différente. Le bloc If then else est un bloc C qui exécute les blocs à l'intérieur de la branche if ou de la branche else, en fonction de la valeur booléenne rapportée.

Après avoir exécuté la branche if ou la branche else, le projet passera au bloc suivant de la pile. Le flux de projet des blocs If then else peut également être affiché pour rendre les branches plus visibles.

Notez que dans ces exemples, la branche else est utilisée pour gérer l'état d'un objet qui n'est ni rouge ni vert. Dans ce cas, une intervention humaine serait nécessaire. Auparavant, vous avez appris que la lumière bleue sur la tour de signalisation est utilisée pour indiquer une intervention humaine nécessaire. De plus, un arrêt contrôlé arrêtera le mouvement du bras à 6 axes afin d'assurer la sécurité des personnes et des machines. Un bloc de tour de signal Set et un bloc d'arrêt de contrôle Set peuvent être ajoutés à la branche else, de sorte qu'un objet qui n'était pas rouge ou vert déclencherait ces fonctions de sécurité.

Les images jusqu'à présent ont seulement montré comment gérer l'état de l'objet étant rouge. Un autre Si sinon est nécessaire pour vérifier l'état de l'objet étant vert.

Pensons au flux de projet avec cette structure. Chaque fois que le projet est exécuté, plusieurs branches seront exécutées, quelle que soit la couleur détectée par le capteur optique.

Réfléchissons à cela avec un disque rouge comme exemple. Si le capteur optique détecte le rouge, la condition du premier bloc If else sera signalée comme vraie. Le bloc à l'intérieur de la branche if s'exécuterait, déplaçant le bras à 6 axes sur la palette rouge. Cependant, la condition à l'intérieur du deuxième bloc If else serait signalée comme fausse. Cela signifie que le bloc à l'intérieur de son autre branche fonctionnerait, mettant le bras à 6 axes en arrêt contrôlé et clignotant en bleu sur la tour de signalisation. Parce que le bras à 6 axes serait dans un état d'arrêt contrôlé, aucun autre bloc du projet ne pourrait fonctionner, et cela cesserait toutes les opérations jusqu'à ce qu'il soit résolu.

Bien que nous puissions maintenant rendre compte d'un objet inattendu (comme un cube bleu), le bras à 6 axes n'atteindra jamais le point du projet de libération du disque sur la palette. Au lieu de vérifier les conditions de rouge et de vert l'une après l'autre, il existe un moyen de vérifier si un objet est vert uniquement si l'objet n'est pas rouge.
Emboîté Si alors d'autres blocs
Chacune des branches du bloc If else peut accepter d'autres blocs C en son sein. C'est ce qu'on appelle l '« imbrication ». Cela signifie que le deuxième bloc If then else peut être imbriqué dans la branche else de la première, comme ceci.
Maintenant, l'état du capteur optique détectant le vert ne sera vérifié que lorsque l'état précédent (le capteur optique détecte le rouge) signalera faux. Ainsi, lorsque le capteur optique détecte le rouge, seule la première branche fonctionnerait, déplaçant le disque au-dessus de la palette rouge.

Si le capteur optique détecte le vert, l'état de la première branche si (Optical détecte le rouge) signalerait faux, et donc la branche else s'exécuterait. L' état du bloc If else imbriqué serait vérifié pour voir si le capteur optique détecte le vert. Cette condition serait signalée comme vraie, de sorte que le bloc à l'intérieur de la deuxième branche fonctionnerait, déplaçant le disque sur la palette verte.
Si ni le rouge ni le vert n'étaient détectés par le capteur optique (comme dans le cas d'un cube bleu capté), les deux conditions seraient signalées comme fausses, et donc la branche else du bloc If else imbriqué s'exécuterait, déclenchant un arrêt contrôlé et alertant les travailleurs de la nécessité d'une intervention humaine. Ces flux de projet peuvent également être visualisés sous forme d'organigramme, comme celui que l'on voit ici.

Les blocs imbriqués If else peuvent être considérés comme une liste de questions en cascade. Les questions sont les suivantes :
- L'objet est-il rouge ?
- Oui ? Passez sur la palette rouge et arrêtez de poser des questions.
- Non ? Posez une autre question.
- L'objet est-il vert ?
- Oui ? Passez sur la palette verte et arrêtez de poser des questions.
- Non ? Ensuite, l'objet n'est pas rouge ou vert. Changez les couleurs de la tour de signalisation et déclenchez un arrêt contrôlé.
- L'objet est-il vert ?
Notez que les questions ne sont posées que si la réponse à la question précédente est négative.
Bien que cela gère toutes les conditions que nous voulons vérifier, il existe un autre bloc qui vérifiera les conditions de la même manière, mais qui est plus facile à construire que les blocs imbriqués.
Sinon si Bloc
Le bloc Else if vous permet de vérifier plusieurs conditions dans le même bloc. Chacune des conditions de ce bloc sera vérifiée séquentiellement, uniquement si la condition précédente est signalée comme fausse. Si toutes les conditions booléennes pour les branches else sont fausses, les blocs à l'intérieur de la section else seront exécutés.

Ce bloc a le même flux de projet que les blocs imbriqués If then else, mais il est plus facile à construire car il n'est pas nécessaire d'imbriquer des blocs. Vous en apprendrez plus sur le codage avec le bloc Else if dans la leçon suivante.
Vérifiez votre compréhension
Avant de passer à la leçon suivante, assurez-vous de comprendre les concepts de cette leçon en répondant aux questions suivantes dans votre cahier d'ingénierie.
Vérifiez votre compréhension des questions > (Google Doc / .docx / .pdf )
Sélectionnez Suivant > pour appliquer le bloc Else if dans un projet.