Contrôler la porte du garage grâce à la télécommande¶
Auteurs
URCA
Ce tutoriel s’intéresse à la traduction d’un GRAFCET dans le logiciel Scratch pour l’utilisation de Home I/O.
Objectif : Contrôler la porte du garage grâce à la télécommande
Afin de transcrire un Grafcet dans Scratch, il faut exploiter la fonction « envoyer un message ». En effet, c’est grâce à cette fonction que l’on va gérer les convergences et divergences du GRAFCET.
Dans ce tutoriel nous prendrons l’exemple de la commande de la porte du garage comme support. Le programme est le suivant :
Un appui sur le bouton 1 de la télécommande ouvre la porte du garage, après une temporisation de 5 secondes en position ouverte, la porte se referme. Lors de la fermeture, lorsque la porte n’est plus ouverte, si on appuie une nouvelle fois sur le bouton 1 ou, si le détecteur infrarouge présent au niveau de la porte du garage détecte un passage, la porte s’ouvre à nouveau. Ce cycle est répété tant que la porte du garage n’est pas fermée.
Un GRAFCET de commande de la porte de garage respectant le cahier des charges est proposé ci-après.
Les actions indiquées sont des actions continues, c’est-à-dire : qu’elles sont réalisées uniquement lorsque l’étape correspondante est active. Les ordres envoyés par Scratch 2 s’apparente plutôt aux actions mémorisées dans un GRAFCET. Il y a 2 commandes possibles de la porte du garage dans Home I/O : OUVRIR et FERMER. Dans Scratch 2, il y a 3 ordres possibles OUVRIR, FERMER et STOPPER. Lorsque l’ordre OUVRIR (ou respectivement FERMER) est envoyé par Scratch 2 à Home I/O, l’ordre d’ouverture (ou de fermeture) de la porte de garage est activé. Celui-ci reste valide tant que Scratch 2 n’envoie pas à Home I/O l’ordre STOPPER (la porte s’arrête) ou FERMER (la porte descend) (ou respectivement OUVRIR : la porte s’ouvre). Le GRAFCET de commande doit donc être adapté pour prendre en compte ce fonctionnement particulier de la commande de Home I/O au moyen de Scratch 2.
Programmation :¶
Dans un premier temps, il est nécessaire de définir quand notre programme sera actif. Pour cela la manière la plus simple est d’activer notre programme dès que l’on appuie sur le drapeau vert au-dessus de l’interface graphique. Aussitôt on envoie le message « X1 » pour signifier que notre GRAFCET est actif.
On sélectionne donc le bloc « Quand – drapeau vert – est cliqué » dans la catégorie « Evènements » et le bloc « envoyer à tous X1 » (X1 étant un nouveau message créé à partir du menu déroulant du bloc de la catégorie « Evènement »).
Suite à la réception du message « X1 », il faut attendre la condition d’ouverture de la porte : le bouton 1 de la télécommande. La suite du GRAFCET (après la transition « bouton 1 ») étant une convergence en OU, il faut créer un nouveau script et envoyer un deuxième message « X2 » qui permettra la coordination du programme.
Après avoir reçu le message « X2 », dans un nouveau script, il faut simplement exécuter les actions linéairement telles qu’elles sont décrites dans le cahier des charges (étapes 1 à 4) et le GRAFCET de commande :
- Ouverture de la porte du garage
- Attente que la porte soit totalement ouverte (capteur)
- Arrêt de la porte
- Temporisation de 5 secondes
- Fermeture de la porte
- Attente que la porte ne soit plus ouverte
Enfin, il faut envoyer un nouveau message (« X3 »). C’est à partir de la réception du message « X3 » que le dernier script va commencer. Il va permettre de gérer la divergence en « OU ».
Dans ce script, dès la réception du message « X3 », il faut vérifier qu’au moins une des conditions de la divergence en OU est présente : « bouton télécommande 1 » OU « capteur infrarouge du garage » OU « porte du garage fermée ». Pour cela, on utilise un bloc « attendre jusqu’à » dans lequel on ajoute les l’état des capteurs correspondants.
Dans notre cas la divergence donne lieu à 2 branches : ces deux branches se traduisent par un bloc « si…alors…sinon… ». Cela permet de gérer cette divergence en OU de façon exclusive.
Si la condition « NON porte fermée ET (bouton télécommande 1 OU capteur infrarouge », est vérifiée la porte doit s’ouvrir. Il faut donc envoyer le message « X2 » ce qui permettra au programme de boucler vers le script qui permet d’ouvrir la porte. Dans le cas contraire, cela signifie que la porte est fermée, on doit donc stopper la porte de garage et par l’envoi du message « X1 » retourner vers le script qui attend que le bouton 1 soit appuyé.
Les blocs correspondants à cette partie sont les suivants :
Maintenant que le GRAFCET a complètement été traduit dans Scratch 2, le programme est fonctionnel.
Programme complet :