Une interface homme machine IHM permet à un utilisateur de commander un système et contrôler son état sans avoir à accéder au programme de ce système, éventuellement en étant à distance, à travers un écran par exemple.
Le programme à élaborer devra permettre de :
Contrôler le finger starter par :
des sprites
les touches du clavier de l'ordinateur
un bouton physique
Visualiser le mouvement du doigt sur l'ordinateur
Vous allez avoir besoin de votre finger starter monté et connecté avec :
Une carte Arduino UNO
Le servo-moteur connecté sur une broche digitale (Dx)
Un joystick monté sur une broche analogique (Ax)
Le câble USB
Option : une alimentation externe pour la carte Arduino (pile ou alimentation secteur)
Le programmation se fera sur la plateforme en ligne mBlock.
⚠ Si ce n'est pas déjà fait, connectez-vous avec votre compte Google afin de pouvoir sauvegarder vos programmes en ligne.
Connectez la carte Arduino au PC avec le câble USB
Choississez l'option de connexion "Série"
Cliquez sur "Connecter"
Sélectionner l'option "USB Serial Port COM X" où X est un numéro quelqueconque
Un message "Connecté !" doit s'afficher quelques instants
Vous allez réaliser un programme simple qui plie et déplie le doigt automatiquement :
Ecrire l'algorithme d'un programme permettant de :
Plier le doigt puis attendre 1 secondes, déplier le doigt, attendre 1 seconde
Recommencer cela une 2eme fois
Reproduire cet algorithme dans mBlock et l'enregistrer comme "FingerStarter simple"
L'angle du doigt tendu est autour de 45° (⚠ à avoir bien placé la poulie lors du montage!!)
L'angle du doigt déplié est autour de 135°
Téléverser ce programme sur la carte et tester
Adapter les angles pour le doigt s'ouvre et se ferme correctement
Dans la suite, nous allons élaborer l'Interface Homme Machine (IHM) indiqué dans l'introduction de cette partie.
▶Le modèle d'IHM avec les éléments essentiels est accessible sur ce lien et via le bouton ci-contre (Merci M Losfeld).
Une fois le modèle ouvert cliquer sur "Remixer" pour l'enregistrer et commencer les modifications.
Dans mBlock vous aurez besoin de :
Un arrière-plan (déjà fourni)
Un « objet/lutin » statique Doigt ayant deux « costumes » possibles (tendu ou plié)
Deux « objets/lutins » statiques à choisir, l'un symbolisant un poing fermé, l'autre l'index tendu
Deux variables (attention à bien sélectionner "Pour tous les objets" lors de la création des variables) :
"Tendu / Plié" : indique l’état du doigt
"Joystick" : indique la valeur renvoyée par le joystick connecté.
⚠️ Vous allez programmer en mode LIVE sur la carte Arduino ⚠️
Une mise à jour du firmware de la carte Arduino sera peut-être nécessaire.
Nous allons d'abord programmer la carte Arduino pour que le doigt puisse se plier et se déplier en fonction de la valeur de la variable Tendu/Plié. On verra dans les étapes suivantes comment changer la valeur de cette variable.
Au lancement du programme (drapeau vert), le doigt bougera en fonction de la valeur de la variable "Tendu / Plié". Voici l'algorithme du programme à réaliser dans cette étape :
Lorsque la variable Tendu/Plié prend la valeur 1, le doigt prend la position tendue.
Lorsque la variable Tendu/Plié prend la valeur 0, le doigt prend la position pliée.
▶ Dans le programme principal (lancement par le drapeau), coder cet algorithme avec les blocs appropriés. N'oubliez pas le "Pour toujours" !
Un appui sur la flèche haut du clavier provoque :
l’apparition du doigt en position tendue sur l’IHM (changement de costume)
le changement de la variable Tendu/plié qui passe à 1
Un appui sur la flèche bas du clavier provoque :
l’apparition du doigt en position repliée sur l’IHM (changement de costume)
le changement de la variable Tendu/Plié qui passe à 0
Un clic sur l’objet représentant l’index tendu provoque :
l’apparition du doigt en position tendue sur l’IHM (changement de costume)
le changement de la variable Tendu/plié qui passe à 1
Un clic sur l’objet représentant l’index plié provoque :
l’apparition du doigt en position repliée sur l’IHM (changement de costume)
le changement de la variable Tendu/Plié qui passe à 0
Connectez un joystick avec un câble grove sur un des connecteurs analogiques (Ax) de la carte Arduino (où x sera le numéro à utiliser dans le programme)
La variable Joystick prend la valeur analogique lue sur le joystick connecté (utiliser le bloc approprié, cf image ci-contre)
La variable Joystick peut prendre des valeurs entre 0 et 1023 : faites des tests et déterminez la valeur (ou l'intervalle de valeurs) renvoyée lorsque l'on appuie sur le joystick
A programmer :
Si le joystick est pressé, la variable Tendu/Plié prend la valeur 0
Tester l'utilisation de toutes les options de votre programme complet
Observations :
La fermeture et l'ouverture du doigt peut être actionnée avec le clavier ou la souris.
La fermeture du doigt peut être commandée par le joystick
Le sprite "doigt" affiche correctement l'état du finger starter
Etape suivante : Programmation de la main complète !