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, si on appui 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.

Le GRAFCET résultant de ce fonctionnement est particulier du fait des étapes « Stopper ». En effet, la commande de la porte du garage dans HOME I/O peut prendre les 3 état suivants : monter / descendre / stopper. Après chaque déplacement, si la porte n’est pas arrêtée, alors la porte du garage tentera de continuer à monter/descendre.

Le GRAFCET résultant ce fonctionnement est le suivant :

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 un nœud, 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) :

  • 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

Le prochain bloc à ajouter à script va permettre de valider l’accès à la divergence : le fait que la porte ne soit plus ouverte (capteur) suffit dans notre cas. Enfin, il faut envoyer un nouveau message (« X3 »). C’est à partir de ce message « X3 » que commencera le dernier script. Il va permettre de gérer la divergence en « OU » et donc de coordonner le programme.

Dans un nouveau script, dès la réception du message « X3 », il faut vérifier qu’il y ait un capteur qui permettra de valider une des conditions de la divergence : « 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 blocs précédents.

Dans notre cas la divergence donne lieu à 2 branches : ces deux branches se traduisent par un bloc « si…alors…sinon… ».

Une fois la condition suivante vérifiée : « porte fermée ET –bouton télécommande 1 OU capteur infrarouge- », la porte devra 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. Sinon, la porte sera fermée, on stop la porte et on retourne à l’étape 1 où on attend un appui sur le bouton 1 : message « X1 ».

Les blocs correspondants à cette partie sont les suivants :

Maintenant que le GRAFCET a complètement été traduit dans Scratch, le programme est fonctionnel.

Programme complet :