Vous êtes sur la page 1sur 2

Ludovic Daiguson Promotion Rayleigh 13/02/24 - 10:42

Michaël Delègue S.I.I / TP34


Logique séquentielle – machine à états
Programmation d’une machine à états en C++ avec Arduino

1 PRESENTATION

1.1 ORGANISATION DU TRAVAIL ET CONTRAINTES MATERIELLES


L’activité proposée se déroule sous forme d’un projet en sous-
groupe de 3 étudiants durant trois semaines.
Comme dans tout challenge, de nombreuses contraintes sont
imposées : le matériel mis à votre disposition sera identique à
tous les participants. Aucun décâblage possible !
Sachez de plus, pour des raisons d’organisation que le matériel
sera utilisé par d’autres groupes d’élèves : le câblage est
générique, aucune modification ne sera possible (ni en plus ni
en moins). Ainsi, la connectique est imposée : vous serez
contraints d’utiliser les ports d’entrée/sortie du montage confié.

1.2 LES RESSOURCES


Les composants matériels à disposition s’articulent autour :
• d’une carte Arduino Méga 2560 ;
• d’un buzzer piézoélectrique ;
• d’un écran à cristaux liquides de 4 lignes de 20 caractères piloté en I2C (bibliothèque) ;
• d’une platine munie d’un clavier matriciel de 16 touches (4x4), de 4 boutons-poussoirs et de 8
leds et les fils nécessaires.

La bibliothèque OBJ_STAT dédiée au codage d’une machine à


états devra être mise en œuvre pour commander votre
système. Elle a été modifiée pour l’adapter au matériel, vous
devrez donc l’utiliser sans autre modification possible et ne
pourrez pas non plus la télécharger à nouveau depuis son site
d’origine (les méthodes on() / off() pour les leds auront un
fonctionnement inversé).
Sans le savoir, vous allez utiliser un langage de programmation
orienté objet en C++…

Plusieurs exemples de code respectant les contraintes de


câblage vous sont fournis au TP33.
Les nombreux commentaires vous guideront dans l’utilisation
du matériel et la programmation de votre machine à états.
Une documentation (TP33_R_obj-stat.pdf) des méthodes de la
bibliothèque OBJ_STAT est disponible.

Une documentation (TP33_PlantUML_SMD) pour la réalisation


du graphe d’états selon SysML avec l’outil gratuit en ligne
PlantUML est fourni. L’URL du site de PlantUML :
http://www.plantuml.com/plantuml/uml

Une dernière ressource (TP33_R_Arduino) doit permettre de répondre à toutes vos interrogations
concernant le langage C++.

TP34 Sciences Industrielles pour l’Ingénieur 1/2


2 LES PROJETS
Deux types de projets sont permis :

• Amélioration du digicode donné TP34_digicode.ino en codant de fonctionnalités supplémentaires.


• Toute production originale d’un projet proche de l’exemple du digicode en termes de difficulté : jeu du
Master-Mind, quizz, juste prix, pendu, calculatrice, bataille navale, jeu de reflexe, jeu du Simon… Sera
considéré similaire, toute réalisation comptabilisant 12 états, 200 instructions et 12 méthodes différentes de
la bibliothèque OBJ_STAT ;

2.1 SOLUTION 1 : DIGICODE AMELIORE


La base du code est fournie : il s’agit d’apporter certaines fonctionnalités dont voici des exemples :
• Initialisation du mot de passe : un nouveau mode permet de le changer ;
• Comptabilisation des codes erronés : en cas de trois échecs successifs, le système se verrouille et un code
administrateur permet de déverrouiller le système ;
• Identification avant mot de passe : la saisie d’un identifiant est préalablement demandée pour donner un accès
différent selon le niveau d’accréditation.
• Horodatage des accès : chaque tentative est mémorisée (identifiant et heure) puis consultable.
• Ajouter d’effets sonores : un bref bip retentit après un appui sur le clavier lors de la saisie du code…

2.2 SOLUTION 2 : PROGRAMME ORIGINAL DE JEU


Si vous choisissez une production originale, par exemple le célèbre jeu du Master-Mind, vous définirez un nombre de
pions et de couleurs différentes qui correspondront à une touche de clavier. Il s’agira en termes de code de comparer
la suite saisie à celle prédéfinie. Via l’écran lcd, l’utilisateur dispose de plusieurs tentatives pour deviner la combinaison
gagnante par affichage du nombre de pions bien/mal placés.

3 LE BAREME

Un compte-rendu incluant la description en langage naturel (description textuelle) et le graphe d’états associé du jeu
est attendu. Ce dernier doit être présenté avec l’outil de saisie en ligne PlantUML. Le code sera fourni au format .ino.
Proposition de barème retenu.

Mise en page, orthographe, format … du compte-rendu 2


Présentation écrite du cahier des charges : le besoin, les fonctionnalités
3
pratiques, les scénarios et les interactions avec l'utilisateur
Diagramme d'états associé (SysML) avec PlantUML 3
Programmation de la machine à états décrite 3
Utilisation des méthodes prédéfinies de la bibliothèque OBJ_STAT 3
Créativité-originalité-difficulté de réalisation 6
20 0
Triptyque : correspondance entre description textuelle / graphe d’états / code C++

Description textuelle

Modèle graphe d’états code C++

TP34 Sciences Industrielles pour l’Ingénieur 2/2

Vous aimerez peut-être aussi