Académique Documents
Professionnel Documents
Culture Documents
Le TP n°1 consiste à réaliser une machine à état. Pour ce faire, nous allons concevoir un montage permettant
l'affichage d'un menu déroulant sur un afficheur LCD donnant accès à 5 actions :
La première ligne de l'afficheur devra permettre le défilement et le choix des actions et la seconde ligne
indiquer l'action en cours d'utilisation.
1
Galand Gabriel & Le Cadre Jean-Guillaume
- Le but des résistances de pull-down est d'évacuer les courants vagabonds et de donner un signal clair. Elles sont
directement intégrées au module BP avec LED intégrée dont nous disposons.
- On renomme les broches 2 et 3 respectivement lampe et bouton. Cela facilitera la lecture du code.
- Afin
d'effectuer la fonction télérupteur, on sauvegarde l'état de la lampe à chaque appui sur le bouton.
- Cependant nous avons un effet rebond dû à la mécanique de l'interrupteur.
-La lampe
clignote à une fréquence 1 hz.
2
Galand Gabriel & Le Cadre Jean-Guillaume
- Nous ajoutons
Serial.begin(9600) pour ouvrir le port série de l'arduino avec une vitesse de communication de 9600 baud et
nous lisons la valeur de la température avec Serial.print("temperature = "), afin de mettre à la ligne les
nouvelles valeurs on ajoute Serial.println(temperature).
3
Galand Gabriel & Le Cadre Jean-Guillaume
EASI 890 – TP machine à état - ITII4
● On lit la « valeur » de la borne sur laquelle est branchée la « patte milieu » du potentiomètre.
● On convertit la valeur en tension 0-5V.
● On affiche la valeur de la tension calculée sur la seconde ligne de l’écran LCD.
Toutes les fonctions précédentes ont été implémentées dans des fonctions séparées.
Dans le setup (), nous initialisons l’écran LCD et nous affichons le message « Bienvenue » :
Enfin, nous créons 2 interruptions qui vont gérer les appuis sur les boutons de défilement et validation :
Elles permettent sur un front montant (appui sur un bouton) de déclencher l’exécution des fonctions
app_bouton_def ou app_bouton_ok suivant le bouton appuyé.
4
Galand Gabriel & Le Cadre Jean-Guillaume
On remet la variable appuie_ok à l’état bas. Cela permet d’éviter de lancer plusieurs fois une action.
Puis, un switch qui scrute la valeur de etat_actuel, nous permet de changer l’affichage du LCD en cas d’appui sur le
bouton de défilement. Il permet également de remettre la variable appuie_def à l’état 0 pour éviter de changer de mode
plusieurs fois d’affilée.
Dans un second switch qui scrute également la valeur de etat_actuel, en cas d’appui sur le bouton ok, le programme
5
Galand Gabriel & Le Cadre Jean-Guillaume
6
Galand Gabriel & Le Cadre Jean-Guillaume
1. Introduction
Cette partie du TP consiste à réaliser les fonctionnalités de la machine à état effectué précédemment à travers
2 Arduino, un maitre et un esclave. Pour ce faire, nous allons devoir :
• Connecter les deux cartes Arduino avec un câble croisé, c'est-à-dire que la broche transmission d'une carte est
connectée à la broches réception de l'autre carte et vice versa.
• Définir le débit de transmission de données (baud rate) dans les paramètres de la communication série de
chaque carte soit 9600 baud.
• Utiliser la bibliothèque de communication série Arduino So wareSerial.h pour envoyer et recevoir des
données, (ex : Serial.read(), Serial.write(), Serial.available(), etc ).
• Définir un protocole de communication afin de structurer les données transmises entre le master et le slave.
Nous déclarons les variables envoyé, e_nom _de_la_variable et pour les variables r_nom _de_la_variable.
Le protocole de transmission utilisé est le suivant : A_x ou x est le numéro de commande à réaliser par l’esclave.
De plus, nous utilisons d’autres ports série que ceux prévu initialement dans l’Arduino. Pour ce faire, nous utilisons la
bibliothèque So wareSerial.h ainsi que la commande So wareSerial ma_transmission(rxPin, txPin) ou rxPin et txPin
sont respectivement les broches de réception et transmission (7 et 9 dans notre cas). L’utilisation est ensuite la même
que pour le serial habituel.
Coté maitre, la structure de la programmation reste la même mais toutes les procédures sont supprimées et implantées
coté esclave. Les modifications interviennent dans le second switch où, au lieu d’appeler une procédure pour l’action à
réaliser, le switch envoie l’instruction de la commande à réaliser via le port série selon le protocole expliqué ci-dessus.
Pour la partie position et température, le fonctionnement est le même mais, une fois la commande envoyée, le maitre
attend une valeur envoyée par l’esclave pour l’afficher.
7
Galand Gabriel & Le Cadre Jean-Guillaume
ft
ft
ft
Coté esclave, nous avons transféré toutes les procédures utilisées précédemment. On initialise également le port série
comme expliqué coté maitre. Dans le loop nous récupérons les données envoyées par le maitre puis, grâce à un switch,
nous exécutons la procédure demandée en fonction des données reçues.
Pour les 2 procédures qui doivent renvoyer des données (position et température), le programme est modifié pour
retourner les données sur le port série plutôt que sur l’afficheur LCD.
8
Galand Gabriel & Le Cadre Jean-Guillaume
CONCLUSION
Nos machines à état fonctionnent correctement pour les procédures qui ne renvoient pas d’informations.
Pour les mesures de position et de température, le système ne fonctionne pas correctement car l’information n’est « lu
qu’une seule fois ». Ce problème vient d’une mécompréhension de notre part du fonctionnement global de la machine
à état. Nous n’avons pas eu le temps de corriger le programme maitre pour qu’il corresponde à un fonctionnement
nominal d’une machine à état.
9
Galand Gabriel & Le Cadre Jean-Guillaume