Vous êtes sur la page 1sur 9

EASI 890 – TP machine à état - ITII4

PARTIE 1- Programmation + câblage machine état


1. Introduction:

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 :

● Allumer une led depuis un BP en mode interrupteur


● Allumer une led depuis un BP en mode télérupteur
● Faire clignoter une led
● Lire la température d'un capteur
● Lire la valeur d'un potentiomètre

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.

Nous réaliserons ce montage avec le matériel ci-dessous:

● Arduino Board model R3


● Carte extension entrée/sortie
● Afficheur LCD RGB
● 2 x BP
● BP avec led integrée
● Potentiomètre
● Capteur de température

2. Création et implantation des fonctionnalités :

1. Fonctionnalité : Allumer une led depuis un BP en mode interrupteur

1
Galand Gabriel & Le Cadre Jean-Guillaume

EASI 890 – TP machine à état - ITII4

- 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.

2. Fonctionnalité : Allumer une led depuis un BP en mode télérupteur

- 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.

3. Fonctionnalité : Faire clignoter une led

-La lampe
clignote à une fréquence 1 hz.

2
Galand Gabriel & Le Cadre Jean-Guillaume

EASI 890 – TP machine à état - ITII4

4. Fonctionnalité : lire la température d'un capteur

- 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

5. Fonctionnalité : lire la valeur d’un potentiomètre

● 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.

6. Gestion d’un menu déroulant et affichage sur 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 » :

Puis nous affichons le mode sélectionné au démarrage


du programme

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é.

La fonction app_bouton_def met la variable appuie_def à l’état haut

La fonction app_bouton_ok met la variable appuie_ok à l’état haut.

4
Galand Gabriel & Le Cadre Jean-Guillaume

EASI 890 – TP machine à état - ITII4

Dans le programme principal loop() :

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

EASI 890 – TP machine à état - ITII4

lance la procédure choisie.

La machine à état fonctionne alors suivant le diagramme d’état suivant :

6
Galand Gabriel & Le Cadre Jean-Guillaume

EASI 890 – TP machine à état - ITII4

PARTIE 2- Communication entre 2 Arduino

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.

2. Programmation coté maitre

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

EASI 890 – TP machine à état - ITII4

3. Programmation coté esclave

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

EASI 890 – TP machine à état - ITII4

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

Vous aimerez peut-être aussi