MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son...

47
Micro projets A2I 2016-2017 Page 1 MICRO PROJETS A2I 2017-2018 Organisation : Les projets seront réalisés en binôme. Ils seront programmés en C dans l'environnement IDE Devcpp ou NetBeans. Les applications fonctionneront donc dans une console DOS. Les projets seront rendu dans une archive zip envoyée par mail ([email protected]). La date limite sera indiquée sur le blog. Les codes sources et l'exécutable, seront accompagnés d'un document décrivant le principe de fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide indiquant comment utiliser le programme. L'évaluation du travail portera évidemment sur le bon fonctionnement du programme et le respect du cahier des charges, mais également sur la qualité des codes sources, l'indentation du code , le choix des noms de variables et la présence de commentaires judicieux et le document d'accompagnement. Présentation des projets La majorité des projets concerne des applications assurant des fonctions d'automatisme. La simulation des entrées sera assurée par la gestion de plusieurs touches du clavier permettant de simuler le changement d'état des entrées de l'automate. Les sorties seront simulées par affichage sur l'écran. Les applications seront construites de telle sorte que tous les affichages soient gérés dans un espace de 80 colonnes et 32 lignes. S'il est nécessaire d'avoir un plus grand espace, dans ce cas il faudra paramétrer la fenêtre DOS en modifiant dans ses propriétés la largeur et la hauteur de la fenêtre. Evidemment cette contrainte sera précisée dans le document accompagnant le projet. Liste des projets Titre Particularités Catégorie Niv. difficulté 1 Gestion des feux de circulation d'un carrefour Affiche les feux en couleur Automate 2 Gestion d'un pont levis Affiche une animation du pont Automate 3 Gestion d'un distributeur de boisson Affiche une animation des stocks Automate 4 Gestion d'un portail automatique Affiche une animation du portail Automate 5 Gestion des barrières d'un passage à niveau Affiche une animation du passage a niveau Automate 6 Gestion d'un digicode Gestion du mode programmation de code et mémorisation des codes dans un fichier Automate 7 Gestion d'une alarme anti-intrusion Affiche une animation de la centrale Automate 8 Gestion d'une alarme incendie Affiche une animation de la centrale Automate 9 Gestion d'un système de contrôle d'accès Enregistre dans un fichier les passages des utilisateurs reconnus par leur code d'accès Automate /Appli. 10 Gestion d'un programmateur de lav- vaisselle Affiche une animation des actionneurs et des capteurs, possibilité d'accélérer le temps de simulation Automate 11 Gestion d'une écluse Affiche une animation du passage d'un bateau Automate

Transcript of MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son...

Page 1: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 1

MICRO PROJETS A2I 2017-2018

Organisation :

Les projets seront réalisés en binôme. Ils seront programmés en C dans l'environnement IDE Devcpp ou NetBeans. Les applications fonctionneront donc dans une console DOS.

Les projets seront rendu dans une archive zip envoyée par mail ([email protected]). La date limite sera indiquée sur le blog. Les codes sources et l'exécutable, seront accompagnés d'un document décrivant le principe de fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide indiquant comment utiliser le programme. L'évaluation du travail portera évidemment sur le bon fonctionnement du programme et le respect du cahier des charges, mais également sur la qualité des codes sources, l'indentation du code , le choix des noms de variables et la présence de commentaires judicieux et le document d'accompagnement.

Présentation des projets

La majorité des projets concerne des applications assurant des fonctions d'automatisme. La simulation des entrées sera assurée par la gestion de plusieurs touches du clavier permettant de simuler le changement d'état des entrées de l'automate. Les sorties seront simulées par affichage sur l'écran. Les applications seront construites de telle sorte que tous les affichages soient gérés dans un espace de 80 colonnes et 32 lignes. S'il est nécessaire d'avoir un plus grand espace, dans ce cas il faudra paramétrer la fenêtre DOS en modifiant dans ses propriétés la largeur et la hauteur de la fenêtre. Evidemment cette contrainte sera précisée dans le document accompagnant le projet.

Liste des projets

N° Titre Particularités Catégorie Niv. difficulté 1 Gestion des feux de circulation d'un

carrefour Affiche les feux en couleur Automate

2 Gestion d'un pont levis Affiche une animation du pont Automate 3 Gestion d'un distributeur de boisson Affiche une animation des stocks Automate 4 Gestion d'un portail automatique Affiche une animation du portail Automate 5 Gestion des barrières d'un passage à

niveau Affiche une animation du passage a niveau

Automate

6 Gestion d'un digicode Gestion du mode programmation de code et mémorisation des codes dans un fichier

Automate

7 Gestion d'une alarme anti-intrusion Affiche une animation de la centrale Automate 8 Gestion d'une alarme incendie Affiche une animation de la centrale Automate 9 Gestion d'un système de contrôle

d'accès Enregistre dans un fichier les passages des utilisateurs reconnus par leur code d'accès

Automate /Appli.

10 Gestion d'un programmateur de lav- vaisselle

Affiche une animation des actionneurs et des capteurs, possibilité d'accélérer le temps de simulation

Automate

11 Gestion d'une écluse Affiche une animation du passage d'un bateau

Automate

Page 2: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 2

12 Jeu Snake Gestion du clavier affichage animation Appli. 13 Gestion d'une table élévatrice Affiche une animation du mouvement de

la table élévatrice Automate

14 Robot avec détection d'obstacles Affiche une animation des capteurs et la rotation des moteurs de propulsion

Automate

15 Robot suiveur de ligne Affiche une animation des capteurs et la rotation des moteurs de propulsion

Automate

16 Gestion d'un monte charge Affichage de l'animation du monte charge Automate 17 Gestion d'un ascenseur Affichage de l'animation de l'ascenseur Automate 18 Animation des yeux d'un arbre

automate Affichage de l'animation de la position des yeux et des paupières

Automate

Généralités sur les projets Automate

Les projets automate assureront la simulation d'un automate gérant une application spécifique (feux de circulation, pont levis….) Les changements d'états des entrées seront gérés depuis le clavier. Les sorties ou actionneurs seront visualisés sur l'écran en utilisant judicieusement les caractères spéciaux disponibles dans la table ASCII.

Pour les applications faisant appel à des temporisations, il sera implanté dans le programme une fonction permettant d'accélérer le temps et donc de raccourcir les temporisations si ces temporisations sont longue.

Dans certains cas, la simulation à l'écran sera complétée par la simulation du grafcet (voir exemple disponible ici).

Contraintes de programmation

Il faut tenir compte du fait que l’on travail dans la console et donc verrouiller les propriétés de la console de façon à éviter le défilement. On limitera donc les dimensions de la console à 80 colonnes et 32 lignes.

Pour cela : aller dans les propriétés de la console sur l’onglet Configuration (voir ci-dessous) et forcer le format de la console à 80 colonnes et 32 lignes.

Page 3: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 3

Afin d’éviter le défilement des affichages vous devez pour chaque impressions à l’écran positionner le curseur au bon endroit. La bibliothèque Bib_A2I.h contient une fonction GotoXY(int x,int y) assurant le positionnement du curseur dans la console.

Pour éviter d’avoir un affichage avec le curseur clignotant utiliser la fonction Etat_Curseur(0) pour masquer le curseur.

Vous trouverez dans Bib-A2I.h également une fonction color(CouleurTexte, CouleurFond) qui permet la sélection de la couleur du texte et de la couleur de fond avant chaque affichage.

Page 4: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 4

Présentation des projets

Projet N° 1 : Gestion des feux de circulation d'un carrefour

Objectif : gérer les feux tricolores d'une intersection avec des passages protégés pour les piétons et des boutons d'appel pour les piétons. Lors de l'appui sur un bouton d'appel par un piéton, le cycle normal des feux est modifié afin de permettre le passage du piéton.

Schéma de principe :

Tableau des entrées sorties :

Désignation nature Réf schéma Feux rouge route A sortie 3 Feux orange route A sortie 2 Feux vert route A sortie 1 Feux rouge piéton route A sortie 7 Feux vert piéton route A sortie 6 Feux rouge route B sortie 8 Feux orange route B sortie 9 Feux vert route B sortie 10 Feux rouge piéton route B sortie 5 Feux vert piéton route B Sortie 4 Mode clignotant orange Entrée Appel piéton route A Entrée Appel piéton route B Entrée

Route A

Route B

Page 5: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 5

Cycle d'un feu :

Etape 1 Rouge 55 secondes 2 Orange 5 secondes 3 Vert 40 secondes

Attention il faut prévoir un temps de sécurité de 5 secondes entre le moment où une voie passe au rouge et que l'autre passe au vert.

Le mode clignotant est prioritaire sur le mode normal. Le démarrage d'un cycle sera toujours : orange fixe 5s puis rouge sur les deux voies. Ensuite une voie passe au vert après 15 secondes.

Les appels piétons déclenchent le changement de cycle seulement si le feu vert a dépassé 20 secondes.

Les feux rouges piétons s'enclenchent dès que le feu orange de l'autre voie est activé. Les feux verts piétons sont allumés 5 secondes après l'allumage de feu rouge de la voie correspondante.

Une représentation à l'écran de l'état des différents éléments (feux, bouton appel piétons) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe. Un affichage textuel de l'état du grafcet est également envisageable.

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 6: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 6

Projet N° 2 : Gestion d'un pont levis

Objectif : gérer un pont levis permettant le franchissement d'un canal. La montée du pont levis est demandée par un opérateur lors de l'arrivée d'un bateau. Les feux tricolores placés sur la route coupée par le pont levis seront également pilotés. La descente du pont après passage du bateau sera ensuite déclenchée par un opérateur.

Schéma de principe :

Tableau des entrées sorties :

Désignation nature Réf schéma Feux vert sortie 1 Feux orange sortie 2 Feux rouge sortie 3 Montée barrière A sortie 4 Descente barrière A sortie 5 Fin de course haut barrière A entrée 6 Fin de course bas barrière A entrée 7 Montée barrière B sortie 8 Descente barrière B sortie 9 Fin de course haut barrière B entrée 10 Fin de course bas barrière B entrée 11 Commande opérateur montée entrée 12 Commande opérateur descente entrée 13 Montée pont levis sortie 14 Descente pont levis sortie 15 Fin de course haut pont levis entrée 16 Fin de course bas pont levis entrée 17

Conditions de fonctionnement : Durée du feu orange 5 secondes, descente des barrières 5 secondes après le feu rouge, remontée des barrières 10 secondes après la descente du pont.

Une représentation à l'écran de l'état des différents éléments (feux, barrières, fin de course,…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe.

Route

Canal

1 2 3

1 2 3

Fc H : 6 Fc B : 7

M : 4, D : 5

M : 8, D : 9

Fc H : 10 Fc B : 11

Montée : 12 Descente : 13

Pont : Fc H : 16 Fc B : 17

Mont. : 14 Desc.: 15

A

B

Page 7: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 7

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 8: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 8

Projet N° 3 : Gestion d'un distributeur de boisson

Objectif : gérer un distributeur de boisson. Un monnayeur fournit une information de validation de paiement lors de l'introduction de pièces de monnaie dans le distributeur.

Cette information place le distributeur en attente d'un choix de l'utilisateur afin de déclencher le bon moteur libérant alors le bon type de produit. Pour libérer un produit, le moteur doit être alimenté pendant 3 secondes.

Des capteurs placés dans chaque colonne de stockage des produits indique s'il reste des produits disponibles. L'appui sur un bouton d'un stock vide ne sera évidemment pas pris en compte.

Ecrire un programme assurant la prise en compte de l'information du monnayeur, de l'état des stocks, du choix du client afin de piloter les moteurs assurant la distribution des produits.

Schéma de principe :

Stock 1 Stock 2 Stock 3 Stock 4 Stock 5 Stock 6

2 € 1

2

3

4

5

6

7

8 9 10 11 12 13

14 15 16 17 18 19

20

21

22

23

24

25

Page 9: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 9

Tableau des entrées sorties :

Désignation Nature Réf. schéma Monnayeur entrée 1 Bouton choix 1 entrée 2 Bouton choix 2 entrée 3 Bouton choix 3 entrée 4 Bouton choix 4 entrée 5 Bouton choix 5 entrée 6 Bouton choix 6 entrée 7 Capteur Stock 1 vide entrée 8 Capteur Stock 2 vide entrée 9 Capteur Stock 3 vide entrée 10 Capteur Stock 4 vide entrée 11 Capteur Stock 5 vide entrée 12 Capteur Stock 6 vide entrée 13 Moteur stock 1 sortie 14 Moteur stock 2 sortie 15 Moteur stock 3 sortie 16 Moteur stock 4 sortie 17 Moteur stock 5 sortie 18 Moteur stock 6 sortie 19 Voyant Stock 1 vide sortie 20 Voyant Stock 2 vide sortie 21 Voyant Stock 3 vide sortie 22 Voyant Stock 4 vide sortie 23 Voyant Stock 5 vide sortie 24 Voyant Stock 6 vide sortie 25

Une représentation à l'écran de l'état des différents éléments (capteurs, voyants, moteurs) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Un affichage textuel de l'état du grafcet est également envisageable.

Bonus : simuler les stocks en initialisant les stocks et en gérant le nombre de boissons disponibles dans chaque stock en fonction des achat des utilisateurs et en assurant la simulation du capteur de stock lorsque l'on a distribué toutes les boissons du stock.

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 10: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 10

Projet N° 4 : Gestion d'un portail automatique

Objectif : gérer un portail automatique coulissant. L'ouverture du portail sera déclenchée par une demande d'ouverture envoyée par une télécommande. La fermeture du portail sera déclenchée après une temporisation de 10 secondes, lancée à la fin du passage du véhicule. La détection du passage du véhicule est réalisée à l'aide d'une barrière infrarouge.

La sécurité des usagers sera assurée par la présence d'un capteur placé à l'extrémité du portail permettant la détection d'obstacles. Sur présence d'un obstacle, le portail est ré-ouvert puis refermé après une temporisation de 15 secondes.

Un gyrophare est activé durant tout le cycle d'ouverture.

Schéma de principe :

Tableau des entrées sorties :

Désignation Nature Information Télécommande entrée Commande moteur ouverture sortie Commande moteur fermeture sortie Fin de course ouverture entrée Fin de course fermeture entrée Sécurité obstacles entrée Barrières infrarouge entrée Commande gyrophare sortie

Une représentation à l'écran de l'état des différents éléments (capteurs, voyants, moteurs) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Un affichage textuel de l'état du grafcet est également envisageable.

Télécommande

Moteur Barrière infrarouge

Fin de course Fermeture

Sécurité obstacles

Fin de course ouverture

Gyrophare

Page 11: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 11

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 12: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 12

Projet N° 5 : Gestion d'un passage à niveau

Objectif : gérer un passage à niveau assurant la fermeture des barrières à l'approche d'un train puis la réouverture après le passage du train. Les barrières sont équipées de fin de course haut et bas permettant de connaitre leurs positions et d'arrêter alors les moteurs. Les feux rouge sont clignotants, le programme assurera également cette fonction.

Schéma de principe :

Tableau des entrées sorties :

Désignation nature Réf schéma Feux rouge sortie 1 Sonnerie sortie 2 Montée barrière A sortie 3 Descente barrière A sortie 4 Fin de course haut barrière A entrée 5 Fin de course bas barrière A entrée 6 Montée barrière B sortie 7 Descente barrière B sortie 8 Fin de course haut barrière B entrée 9 Fin de course bas barrière B entrée 10 Détection passage train 1 entrée 11 Détection passage train 2 entrée 12

Route

12 Détection passage train 2

1 2

2 1

Fc H : 5 Fc B : 6

M : 3, D : 4

M : 7, D : 8

Fc H : 9 Fc B : 10

A

B

11 Détection passage train 1

Page 13: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 13

Séquence de fonctionnement : 1 – Détection du passage du train 2 - Allumage feu rouge clignotant 3 - Après 5 secondes: commande du moteur de descente des barrières 4 – Attente des fin des courses bas des barrières pour arrêter les moteurs de descente 5 – Attente du passage du train sur la zone de détection de train pour lancer la commande d'ouverture des barrières 6 – Attente des fins de course haut pour arrêter les moteurs de remontée des barrières 7 – Arrêt des feux rouges clignotants et de la sonnerie.

Une représentation à l'écran de l'état des différents éléments (feux, barrières, fin de course,…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe.

Attention la gestion des fins de courses concerne les deux barrières. Elles sont gérées individuellement.

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 14: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 14

Projet N° 6 : Gestion d'un digicode

Création d'un programme assurant la gestion d'un contrôle d'accès par digicode. La frappe d'un code valide déverrouille une porte. La saisie d'un code maitre permet d'entrer dans un mode programmation. Ce mode programmation permet la gestion des 10 mémoires.

Fonctionnement mode ouverture : La saisie d'un code valide déclenche l'allumage de la led verte et la commande d'ouverture de la porte pendant 5 secondes.

Fonctionnement mode programmation : la saisie du code maitre permet le passage en mode programmation. Dans ce mode le système attend un code de fonction composé par exemple de la touche # suivie d'un chiffre puis, en fonction de la commande choisie, d'une série de chiffres validées par la touche *

Fonctions à implanter dans le mode programmation:

• Effacement de tous les codes sauf le code maitre • Effacement d'un code spécifique ( on indique alors le numéro de la mémoire) • Ajout ou modification d'un code ( on indique le numéro de la mémoire puis le code à mémoriser) • Sortie du mode programmation

Par exemple : ajouter un digicode dans la mémoire 05 #405*1234* #4 = commande ajouter/modifier un code 05* on donne le numéro de mémoire 1234* on donne le code à mémoriser.

Le digicode est équipé de trois leds (verte, orange, rouge). Utilisez ces trois indicateurs pour renseigner l'utilisateur, lors du mode programmation, de l'avancement des commandes effectuées et de l'enregistrement des commandes.

Par exemple : on peut imaginer que lors que l'on est en mode programme, la led rouge clignote. Lorsqu'une commande est reconnue la led orange s'allume, par contre si la commande proposée n'existe pas, la led orange clignote. La led verte s'allume quelques secondes lorsque la commande est validée.

A vous de proposer un mode de fonctionnement assurant toutes ces fonctions, de façon ergonomique et simple. L'application devra afficher en permanence le contenu des 10 mémoires, l'état des trois leds, le mode de fonctionnement en cours et, en mode programmation, on affichera les commandes saisies en cours.

Schéma de principe :

7 8 9 4 5 6 1 2 3 # 0 *

Commande ouverture porte

Page 15: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 15

Tableau des entrées sorties :

Désignation nature Touche # entrée Touche * entrée Touche 0 entrée Touche 1 entrée Touche 2 entrée Touche 3 entrée Touche 4 entrée Touche 5 entrée Touche 6 entrée Touche 7 entrée Touche 8 entrée Touche 9 entrée Led verte sortie Led orange sortie Led rouge sortie Commande gâche électrique ouverture porte sortie

Une représentation à l'écran de l'état des différents éléments (voyants leds, touches, commandes portes,…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe.

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 16: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 16

Projet N° 7 : Gestion d'une alarme anti-intrusion

Le programme assure la gestion d'un système anti-intrusion. Un ensemble de capteurs composé de radars, de contacts magnétiques sur les portes et de capteurs de vibrations sur les vitres est raccordé à une centrale de gestion. Le système comporte également un boitier à clé permettant la mise en service ou l'arrêt de la centrale. Une sirène assure la signalisation de l'alarme. Le système est aussi équipé d'un afficheur permettant d'afficher le numéro de la zone, ayant déclenché l'alarme. On affichera également le type de la zone : radar, contact magnétique, capteur de vibration.

Le système gère plusieurs zones de surveillances. Une de ces zones est réservée à un circuit d'entrée ou de sortie du bâtiment, elle sera temporisée (zone Radars 1). Lors de la mise en service de la centrale par le bouton à clé, la zone temporisée sera activée après une temporisation de 20 secondes. Sur le même principe, cette zone déclenchera l'alarme seulement après 20 secondes, ainsi l'utilisateur aura le temps de désactiver l'alarme lors de l'entrée dans le bâtiment.

Alarme zone 1 : ouverture porte

Radars 1

Radars 2

Radars 3

Contacts Magnétiques 1

Contacts Magnétiques 2

Capteurs vibration 1

Capteurs vibration 2

Commande à clé

Sirène

Page 17: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 17

Tableau des entrées sorties :

Désignation Nature Radar 1 entrée Radar 2 entrée Radar 3 entrée Contacts Magnétiques 1 entrée Contacts Magnétiques 2 entrée Capteurs vibration 1 entrée Capteurs vibration 2 entrée commande à clé entrée Sirène sortie

Une représentation à l'écran de l'état des différents éléments (capteurs, radars, commande à clé, sirène, afficheur…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe.

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 18: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 18

Projet N° 8 : Gestion d'une alarme incendie

Le programme assure la gestion d'un système de détection d'incendie. Un ensemble de capteurs composé de détecteurs de fumés, et de bris de glace sont raccordés à une centrale de gestion. Ces éléments sont regroupés par zones.

Le système gère 8 zones, 4 zones de détection de fumée et 4 zones de bris de glace. Les zones de bris de glace déclenche l'alarme et la sirène immédiatement. Les zones de détection de fumée déclenchent le buzzer. Une temporisation de 60 secondes permet à un opérateur d'arrêter le buzzer et le processus d'alarme. S'il n'y a pas d'action durant ces 60 secondes, la sirène est alors déclenchée pour une durée de 5 minutes. Les commandes arrêt buzzer et réarmement sont inactives. Après les 5 minutes d'alarme, la centrale d'alarme est bloquée. Elle ne prend plus en compte les détections sur les zones , il faut la réinitialiser avec le bouton réarmement.

Alarme zone 1 : Feu

Det. Fumée 1

Bris de glace 1

Bris de glace 2

Bris de glace 3

Bris de glace 4

Det. Fumée 2

Det. Fumée 3

Det. Fumée 4

Arrêt buzzer Réarmement

Page 19: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 19

Tableau des entrées sorties :

Désignation Nature Det. Fumée 1 entrée Det. Fumée 2 entrée Det. Fumée 3 entrée Det. Fumée 4 entrée Bris de glace 1 entrée Bris de glace 2 entrée Bris de glace 3 entrée Bris de glace 4 entrée Réarmement entrée Arrêt buzzer entrée Buzzer sortie Sirène sortie

Une représentation à l'écran de l'état des différents éléments (capteurs de fumée, bris de glace, sirène, afficheur…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe. Prévoir également l'affichage de la zone qui a déclenché l'alarme.

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 20: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 20

Projet N° 9 : Gestion d'un système de contrôle d'accès et de gestion du temps

Le programme assure l'ouverture d'une porte après récupération d'un code d'accès valide. Les codes valides seront contenus dans un fichier texte avec les noms des utilisateurs. La reconnaissance du code déclenchera l'ouverture de la porte et l'affichage du nom de l'utilisateur correspondant. Après la saisie du code l'opérateur indique s'il entre ou s'il sort du bâtiment afin de définir le sens de passage qui sera enregistré. Chaque action sur le digicode sera enregistrée dans un fichier texte au format CSV avec le nom de l'utilisateur, l'heure et la date de passage ainsi que le sens de passage. Les erreurs de saisie de code seront également enregistrées dans le fichier.

Exemple : 12/09/2015;8H25;entree;Jean Dupond; 12/09/2015;10H12;erreur digicode inconnu; 12/09/2015;12H01;sortie;Jean Dupond;

Format du fichier texte contenant les digicodes valides: Jean Dupond;12345; Georges Truc;45786;

Le fichier d'enregistrement des passages étant au format CSV (séparateur ; ), il sera possible de l'exploiter dans Excel afin de calculer les temps de présence de chaque utilisateur.

M Dupond entre M Dupond sort

Séquence de touche : [1] [5] [1] [5] [E] [1] [5] [1] [5] [S] Le code de M Dupond est 1515

Une représentation à l'écran de l'état des différents éléments (voyants leds, touche, afficheur,…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe.

Le message affiché contenant le nom de l'utilisateur identifié et le sens de passage restera visible à l'écran pendant 10 secondes, puis serra remplacé par le message "Bonjour, identifiez-vous".

7 8 9 4 5 6 1 2 3 E 0 S

M. DUPOND ENTREE

7 8 9 4 5 6 1 2 3 E 0 S

M. DUPOND SORTIE

Page 21: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 21

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 22: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 22

Projet N° 10 : Gestion d'un programmateur de lave vaisselle

Le programme doit assurer la gestion d'un lave-vaisselle en exploitant un ensemble de capteurs et en pilotant des actionneurs (pompe, résistance de chauffage…) en respectant un cycle de lavage.

Principe de fonctionnement d’un lave-vaisselle :

La vaisselle est placée dans une cuve étanche sous laquelle sont implantés les organes assurant le fonctionnement de l’ensemble. On y trouve une pompe puissante assurant le mouvement de l’eau dans la cuve au travers des bras rotatifs. Cette pompe est en marche lors du prélavage, du lavage et du rinçage. Elle est arrêtée lors de la vidange du lave-vaisselle.

La vidange est assurée par une plus petite pompe qui évacue l’eau de la cuve. Le fonctionnement de cette pompe lors des cycles de vidange est lié à un capteur de niveau bas de l’eau dans la cuve.

L’eau est chauffée par une résistance électrique associée à trois thermostats permettant la gestion de plusieurs consignes de température. L’eau est chauffée lors du prélavage, du lavage et du rinçage.

Une électrovanne assure l’alimentation en eau du lave-vaisselle. La fonction de remplissage nécessaire en début du lavage et du rinçage est associée à un capteur de niveau haut afin de couper l’alimentation en eau.

Nous trouvons également dans ce lave-vaisselle deux boîtes de distribution de lessive et de produit de rinçage. Elles sont commandées par le programmateur en début de cycle de lavage pour la boite à lessive et en début de rinçage pour le produit de rinçage.

L’utilisateur dispose de boutons permettant de choisir le programme (ECO, NORMAL, INTENSIF) et d’un bouton MARCHE.

Les différents états du lave-vaisselle sont visualisés par des LEDs (marche, prélavage, lavage, rinçage)

Listes des entrées / sorties du système

Actionneurs : POMPE DE VIDANGE Capteurs : Niveau bas eau dans la cuve POMPE DE LAVAGE Niveau haut eau dans la cuve VANNE EAU Thermostat Eco 40°C Boîte Lessive Thermostat Normal 55°C Boîte Rinçage Thermostat Intensif 70°C Résistance de chauffage

Bouton de commande : Mode Eco LED d’information : Marche Mode Normal Prélavage Mode Turbo Lavage Marche Rinçage Fin du cycle

Trois modes de fonctionnement sont supportés pas le lave-vaisselle, Eco, Normal et Intensif. Ces modes influencent généralement le cycle de lavage, suppression de prélavage, modification des temps de lavage et modification des

Page 23: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 23

consignes de température. Par souci de simplification, on ne retiendra que la notion de consigne de températures différentes pour chaque mode de fonctionnement.

Fonctionnement d’un lave-vaisselle :

Le tableau ci-dessous décrit le cycle de lavage avec les différents actionneurs commandés et les informations assurant l’évolution du cycle (passage à l’étape suivante).

Etapes

Cond

ition

de

fin d

’éta

pe

ou d

e pa

ssag

e à

l’éta

pe

suiv

ante

Vann

e Ea

u

Pom

pe L

avag

e

Pom

pe V

idan

ge

Chau

ffage

Boîti

er le

ssiv

e

Boîti

er ri

nçag

e

Tem

po 1

5s

Tem

po 1

0 m

n

Tem

po 1

5 m

n

Tem

po 3

0 m

n

Tem

po 4

0 m

n

Mar

che

Prél

avag

e

Lava

ge

Rinç

age

Lava

ge te

rmin

é

Duré

e de

l’ét

ape

Arrêt 0 Marche = 1

Vidange 1 Niveau Bas

Cuve X X

Remplissage 2 Niveau Haut Cuve

X

X X X

Vanne Capteur

niveau

Capteur niveau bas

Pompe de vidange

Cuve étanche

Pompe de lavage

Résistance de chauffage

Thermostat 40°,55°,70°

Boîte Lessive

Boîte Rinçage

Page 24: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 24

Prélavage 3 Tempo Prélavage

15mn X X X X X 15mn

Vidange 4 Niveau Bas

Cuve X X X

Remplissage 5 Niveau Haut Cuve

X X X X

Lavage 6 Tempo Lavage 10mn

X X X X X 10mn

Boite Lessive 7 Tempo Lessive

15s X X X X X X 15s

Lavage 8 Tempo Lavage 30mn

X X X X X 30mn

Vidange 9 Niveau Bas

Cuve X X X

Remplissage 10

Niveau Haut Cuve

X X X X

Boite Rinçage 11

Tempo Produit Rinçage

15s

X X 15s

Rinçage 12

Tempo Rinçage X X X X X 15mn

Vidange 13

Niveau Bas

Cuve X X X

Remplissage 14

Niveau Haut Cuve

X X X

Rinçage/ Séchage

15

Tempo Rinçage X X X X X 40mn

Vidange 16

Niveau Bas

Cuve X X X

Fin Cycle 17

Marche = 0 X

Page 25: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 25

Une représentation à l'écran de l'état des différents éléments (capteur, pompes, vannes, niveau d'eau…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe. Les différents capteurs étant simulés depuis le clavier.

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 26: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 26

Projet N° 11 : Gestion d'une écluse

Le programme doit assurer la gestion d'une écluse en automatisant les différentes actions nécessaires pour faire passer un bateau dans une écluse.

Principe de fonctionnement : le programme reçoit une demande de passage de l'aval vers l'amont ou inversement de l'amont vers l'aval. En fonction de l'état de l'écluse (vide ou remplie), le programme pilote la bonne vanne pour remplir ou vider l'écluse. Des capteurs de niveau indiquent si l'écluse est vide ou pleine. Lorsque le niveau est atteint, le programme assure l'ouverture de la porte permettant au bateau d'entrer dans l'écluse. Un capteur indique alors que le bateau est dans l'écluse. Le programme ferme alors la porte puis ouvre la vanne permettant la vidange ou le remplissage de l'écluse en fonction du sens de passage. Lorsque le niveau est atteint, le programme ouvre la porte permettant au bateau de sortir de l'écluse.

Schéma de principe :

Exemple de passage "aval – amont". La vanne amont est ouverte, l'écluse est en remplissage, le bateau monte.

Tableau des entrées sorties :

Désignation nature Passage Aval – Amont entrée Passage Amont – Aval entrée Capteur niveau bas entrée Capteur niveau haut entrée Capteur présence bateau dans l'écluse entrée Commande ouverture porte aval sortie Commande fermeture porte aval sortie Capteur porte aval ouverte entrée Capteur porte aval fermée entrée Commande ouverture porte amont sortie Commande fermeture porte amont sortie Capteur porte amont ouverte entrée Capteur porte amont fermée entrée Commande vanne aval (0 = fermée) sortie Commande vanne amont (0 = fermée) sortie

Une représentation à l'écran de l'état des différents éléments (capteur, portes, vannes, niveau d'eau…) est souhaitée afin de visualiser le fonctionnement de l'ensemble. Vous pouvez vous inspirer du schéma de principe.

Vanne aval Vanne amont Niveau bas

Amont Aval Porte amont Porte aval Niveau haut Capteur

présence bateau

Page 27: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 27

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 28: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 28

Projet N° 12 : Jeu Snake

SNAKE

Programmation du jeu SNAKE sur la console Windows en C sous l’IDE Devcpp ou NetBeans

Copie d’écran du jeu

Principe de fonctionnement du jeu : le serpent avance automatiquement, le joueur ne peut agir que sur la direction. Il n’y a pas de déplacement en diagonale. L’objectif étant de nourrir le serpent en le dirigeant vers les bonus apparaissant aléatoirement sur l’aire de jeu. Chaque bonus avalé augmente la longueur du serpent de la valeur correspondante. Nous avons donc trois bonus positifs : 5, 10 et 20 points mais également deux bonus négatifs. Si le serpent avale un malus, la longueur du serpent diminue de la valeur du malus.

Fin du jeu : le jeu se termine si le serpent touche un des bords de l’aire de jeu ou son corps ou si sa longueur est nul.

Commande du jeu : il faut gérer les changements de directions avec des touches simple du clavier c'est-à-dire en détectant la frappe par exemple des touche Z, W, Q, et S ou en gérant la lecture des touches supportant les flèches.

Page 29: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 29

Contraintes de programmation

Tous les paramètres du jeu seront définis dans des constantes #define, dimension plateau, valeur des bonus, choix des caractères permettant l’affichage du serpent, des bordures. Choix des couleurs des différents éléments.

Il faut tenir compte du fait que l’on travail dans la console et donc verrouiller les propriétés de la console de façon à éviter le défilement. On limitera donc les dimensions de la console à 80 colonnes et 32 lignes.

Pour cela : aller dans les propriétés de la console sur l’onglet Configuration (voir ci-dessous) et forcer le format de la console à 80 colonnes et 32 lignes.

Afin d’éviter le défilement des affichages vous devez pour chaque impressions à l’écran positionner le curseur au bon endroit. La bibliothèque Bib_A2I.h contient une fonction GotoXY(int x,int y) assurant le positionnement du curseur dans la console.

Pour éviter d’avoir un affichage avec le curseur clignotant utiliser la fonction Etat_Curseur(int etat) pour masquer le curseur.

Vous trouverez dans Bib-A2I.h également une fonction color(CouleurTexte, CouleurFond) qui permet la sélection de la couleur du texte et de la couleur de fond avant chaque affichage.

Page 30: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 30

Les principales étapes du développement :

Principe global de la gestion du jeu :

Tant que le serpent avance on reste dans une boucle.

Traitements à prévoir dans cette boucle :

• capture des touches du clavier • traitement éventuel des touches : mise à jour d’une variable direction • faire avancer le serpent et contrôler s’il mange un bonus ou s’il entre en collision avec un mur ou lui-

même • s’il mange un bonus, il faut modifier la taille du serpent puis créer aléatoirement un nouveau bonus • mise à jour des affichages : longueur du serpent, affichage du serpent et des bonus, malus • gestion d’un temps de pause pour ralentir le cycle d’affichage et d’avancement du serpent

Point le plus important à résoudre : Comment gérer la représentation du serpent en mémoire et sa position sur le jeu ?

Il faut impérativement trouver une solution simple de codage en mémoire de la position du serpent afin de réduire les temps de traitement et de rafraichissement de l’affichage car nous somme dans la console Windows qui n’est qu’une simulation d’une console DOS, donc pas forcement très rapide (dépendant fortement de puissance de la machine) Points à ne pas oublier :

Gestion de la temporisation dans la boucle principale : réaliser à l’aide d’une temporisation, qui sera lié à la longueur du serpent afin d’augmenter la difficulté du jeu.

Gestion du tirage des bonus et malus : on tire aléatoirement un bonus ou un malus tant que la position tirée aléatoirement n’est pas libre. Si la position est libre on ajoute le bonus ou le malus. On arrête les tirages aléatoires lorsqu’un bonus est tiré. Donc après chaque gain d’un bonus par le serpent, aucun ou plusieurs malus sont ajoutés sur le jeu et un seul bonus.

Principe global de fonctionnement

La position du serpent est encodée dans un tableau à deux dimensions. Chaque case du tableau correspond à un emplacement d’un caractère sur la console Windows.

On utilisera les règles d’encodage suivantes :

1 : Les cases libres du jeu = valeur négative ( <0 )

2 : Les cases représentant le corps du serpent = valeurs positives et inférieur à 1000

3 : les cases représentant des bonus ou des malus = valeur >= 1000 (chaque type de bonus, malus ayant des valeurs différentes afin de les identifier)

Par ailleurs, les coordonnées de la position de la tête du serpent seront mémorisées dans deux variables X et Y.

Page 31: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 31

La longueur du serpent sera aussi mémorisée dans une variable nommé Longueur.

Comment faire avancer le serpent ?

A chaque cycle de traitement du jeu le programme récupère l’éventuelle touche enfoncée au clavier et met à jour une variable indiquant la direction du serpent (haut, droite, bas et gauche)

Pour faire avancer le serpent on ajoute une case devant le serpent en fonction de la direction. Cette case contient alors la valeur de la longueur du serpent.

A la fin de chaque cycle on appel une fonction qui met à jours l’affichage. Cette fonction scrute toutes les cases du tableau et affiche les bons caractères en fonction des valeurs contenu dans le tableau, mais attention avant d’utiliser une valeur elle est systématiquement décrémenté.

La décrémentation assure la disparition de la queue du serpent. Attention il ne faut pas décrémenté les cases contenant des valeurs >= 1000 qui correspondent au bonus malus. En utilisant cette méthode de codage nous avons dans chaque case du tableau représentant le serpent une valeur positive allant de 0 à la taille du serpent.

La première case du serpent (tête) contient la longueur, la suivante contient la longueur -1. La dernière contenant 0 elle sera effacé lors de l’affichage suite à la décrémentation car elle sera alors négative.

La mise à jour de l’affichage et du déplacement du serpent se résume à deux boucles imbriquées dans lesquelles on trouve une opération de décrémentation, et quelques tests nécessaires aux choix des caractères à afficher en fonction des valeurs contenues dans le tableau.

Comment augmenter la taille du serpent ?

Lorsque le serpent mange un bonus, en fonction du type de bonus on obtient différentes valeurs de points permettant d’augmenter la longueur du serpent.

Pour augmenter la longueur du serpent il suffit d’ajouter le gain de longueur à toutes les cases du tableau représentant le serpent. Cette modification des case représentant le serpent à pour conséquence de retarder l’effacement de la queue du serpent et donc de provoquer son allongement.

Dans le cas d’un malus l’opération inverse aura pour effet la réduction de la longueur du serpent.

Comment lire les touches à la volé sans bloquer l’exécution du programme ?

Exemple de code traitant la détection des flèches ou des lettres

if (kbhit()) { // présence d'une touche C = getch(); // gestion des touche spéciale (les flèches) if (C==-32) {C=getch();} // relecture du buffer du clavier pour récupérer le second code switch (C) { case 's' : case 'S' : case 'M' : // code secondaire flèche Droite Orientation = 0;

Page 32: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 32

break; case 'w' : case 'W' : case 'P' : // code secondaire flèche Bas Orientation = 1; break; case 'q' : case 'Q' : case 'K' : // code secondaire flèche Gauche Orientation = 2; break; case 'z' : case 'Z' : case 'H' : // code secondaire flèche Haut Orientation = 3; break; } } // fin test présence d'une touche

La fonction kbhit() retourne la valeur 1 si une touche à été frapper sur le clavier. Il suffit alors de lire le caractère avec la fonction getch() . Si la touche frappée est une des quatre flèches le code de touche lu est -32. Cette valeur ne correspond pas à un caractère, mais il nous indique que c’est une touche spéciale et qu’il faut lire une seconde fois le buffer du clavier pour obtenir le code de la flèche. Dans l’exemple ci-dessus on retrouve les valeurs correspondantes pour chaque flèche.

Comment afficher un caractère spécial ?

Il faut dans un premier temps retrouver le code ASCII du caractère choisi. Ajouter dans la section des « define » une nouvelle constante avec le code ASCII correspondant.

Exemple : #define SOLEIL 20

// Affichage

printf("%c",SOLEIL) ;

Comment afficher un caractère à un endroit précis dans la console ?

La fonction gotoXY (int X, int Y) place le curseur de la console à la position correspondante avec : X = la colonne et Y = la ligne. L’affichage dans la console suivant cette instruction débutera a partir de la position X,Y. La position (0,0) correspondant a l’angle supérieur gauche.

Cette fonction est présente dans la bibliothèque Bil_A2I.h.

Comment changer la couleur du fond et des caractères dans la console ?

On utilise le fonction color(int CouleurTexte, int CouleurFond) avant chaque affichage dans la console. Cette fonction est présente dans la bibliothèque Bil_A2I.h.

Le nombre de couleurs et limité aux valeurs suivantes :

0 = Noir 8 = Gris 1 = Bleu Foncé 9 = Bleu clair

Page 33: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 33

2 = Vert 10 = Vert clair 3 = Bleu-gris 11 = Cyan 4 = Marron 12 = Rouge 5 = Pourpre 13 = Rose 6 = Kaki 14 = Jaune 7 = Gris clair 15 = Blanc

Comment créer aléatoirement les bonus ou malus ?

Nous avons 5 bonus ou malus possible, il suffit donc d’obtenir un nombre aléatoire entre 0 et 4 afin de choisir un des cinq bonus ou malus.

Nous avons dans la bibliothèque Bil_A2I.h. la fonction rand_Max(int M) qui retourne un nombre entier entre 0 et le nombre M passé en paramètre. Cette fonction utilise la fonction C rand() , afin d’obtenir des nombres vraiment aléatoires il faut initialiser le générateur de nombre aléatoire en début de programme avec la fonction C suivante : srand((unsigned)time(NULL));

Les coordonnées aléatoires du bonus ou malus seront également obtenu avec la fonction rand_Max(int M). Après chaque tirage on doit vérifier si les coordonnées sont bien dans la zone du jeu et si la case n’est pas occupée par un autre bonus / malus ou par le serpent. Si ce n’est pas le cas on doit recommencer le tirage aléatoire.

Etapes du développement :

Etape 1

a) affichage du plateau du jeu b) implantation de la boucle principale du jeu c) gestion de l’avancement du serpent sans gérer les touches du clavier d) appel de la fonction de mise à jour de l’affichage

Créer les fonctions suivantes :

Fonction assurant l’affichage initiale du plateau du jeu Fonction assurant la mise à jour de l’affichage du serpent en scrutant le tableau à deux dimensions

Etape 2

a) Ajout de la gestion des touches de direction et mise à jour de la variable direction b) Modification du traitement de l’avancement du serpent en fonction de la direction c) Ajout de la détection des collisions avec les bordures du jeu ou avec le corps du serpent

Etape 3

a) Ajout du traitement de création aléatoire des bonus / malus b) Prise en compte des bonus / malus lors de l’avancement du serpent c) Gestion et création d’une fonction qui modifie la longueur du serpent dans le tableau à deux dimensions

Etape 4

a) Gestion de l’ajustement de la temporisation du jeu en fonction de la longueur du serpent afin d’augmenter la difficulté du jeu

b) Ajouter la possibilité de rejouer lorsque le joueur à perdu la partie

Page 34: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 34

ORGANISATION GENERALE DU PROGRAMME SNAKE

Affichage plateau Initialisation des variables

Lecture clavier

Mise à jour direction Test touche Oui

Non

Avance Tête Mise à jour X, Y de la tête

Mise à jour variable fin du jeu Test collision Oui

Non

Mise à jour longueur Serpent Test Bonus ou Malus

Oui

Non Tirage aléatoire

Bonus/Malus

Tirage aléatoire premier Bonus

Mise à jour Affichage

Gestion Temporisation

Test variable fin du jeu

Oui

Non

Test Rejouer Oui

Non

FIN

Page 35: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 35

Projet N° 13 : Table élévatrice

Objectif : gérer une table élévatrice pilotée par un boitier de commandes. Le boitier est équipé de deux boutons poussoirs et d'un bouton d'arrêt d'urgence.

Principe de fonctionnement : les deux boutons poussoirs commandent la montée ou la descente de la table élévatrice. La table est équipée d'une pompe hydraulique qui alimente un vérin actionnant des leviers permettant l'élévation de la table. Pour faire monter la table, il faut activer la pompe hydraulique et ouvrir l'électrovanne de montée. Pour faire descendre la table, la pompe hydraulique doit être arrêtée et seule l'électrovanne de descente est activée. Le vérin est de type simple effet, le poids de la table étant important. Si on ouvre la vanne de descente, la force exercée sur le vérin referme le vérin, donc la table descend.

Il faut bien évidemment prendre en compte les différents capteurs de fin de course et de sécurité. L'arrêt d'urgence stoppe le mouvement en cours. L'arrêt d'urgence stoppe la pompe hydraulique et ferme les électrovannes (L'alimentation des électrovannes est donc coupée). Le fin de course haut arrête la pompe et ferme la vanne de montée. Le fin de course bas ferme l'électrovanne de descente. Les barres anti-écrasement stoppent la descente en fermant l'électrovanne de descente. En cas d'arrêt de la descente par les barres anti-écrasement, pour sortir du blocage il faut repasser en mode montée puis ensuite en mode descente.

Tableau des entrées sorties :

Désignation nature Bouton montée entrée Bouton descente entrée Arrêt d'urgence entrée Fin de course Bas entrée Fin de course Haut entrée Barre anti-écrasement entrée Commande moteur pompe sortie Commande électrovanne de montée sortie Commande électrovanne de descente sortie

Page 36: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 36

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 37: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 37

Projet N° 14 : Pilotage Robot (détection d'obstacles)

Objectif : gérer le mouvement automatique d'un petit robot en évitant les obstacles détectés par deux capteurs de proximité placés à l'avant du robot. La propulsion est assurée par deux moteurs. La modification des différents sens de rotation des moteurs permet de faire avancer ou reculer le robot ou de le faire pivoter sur lui-même en inversant les sens de rotation des moteurs.

Principe d'évitement des obstacles.

Exemple : le capteur de droite détecte un obstacle. On fait reculer le robot (par exemple 2 secondes) puis on fait pivoter le robot de 45° vers la gauche ( moteur droit en avant et moteur gauche en arrière pendant 1 seconde).

Proposer également une solution pour le cas où les deux capteurs de proximité détectent en même temps un obstacle.

Page 38: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 38

Tableau des entrées sorties :

Désignation nature Capteur droit entrée Capteur gauche entrée Marche Avant moteur droit sortie Marche Arrière moteur droit sortie Marche Avant moteur gauche sortie Marche Arrière moteur gauche sortie

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 39: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 39

Projet N° 15 : Pilotage Robot (suiveur de ligne)

Objectif : gérer le mouvement automatique d'un petit robot en suivant une ligne tracée au sol à l'aide de 5 capteurs. La propulsion est assurée par deux moteurs. La modification des vitesses de rotation des moteurs permet de faire tourner le robot à droite ou à gauche afin de suivre la ligne tracée au sol.

Principe de suivi de la ligne :

Si les capteurs de droite détectent la ligne : le robot tourne à droite.

Si les capteurs de gauche détectent la ligne : le robot tourne à gauche.

Si le capteur central est le seul à détecter la ligne, le robot avance tout droit.

Ayant deux capteurs à gauche et deux à droite on peut envisager de faire tourner plus rapidement le robot si la ligne est sur les capteurs N°2.(voir schéma)

Pour faire tourner le robot par exemple à droite, on réduit la vitesse du moteur de droite. Les moteurs seront pilotés avec des consignes de vitesse de -100 à +100. Si la commande est positive, le moteur tourne en marche avant; si la commande est négative, le moteur tourne en marche arrière.

Pour faire tourner le robot sur un grand rayon de braquage, on réduira la vitesse de 20% (capteur N°1) et pour un petit rayon de braquage, on réduira la vitesse de 40% (capteur N°2).

Schéma de principe des capteurs

1 1 2 2

Page 40: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 40

Tableau des entrées sorties :

Désignation nature Capteur droit N° 2 entrée Capteur droit N° 1 entrée Capteur centre entrée Capteur gauche N°1 entrée Capteur gauche N°2 entrée Commande de vitesse moteur droit sortie Commande de vitesse moteur gauche sortie

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 41: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 41

Projet N° 16 : Monte charge

Objectif : gérer un monte charge sur deux niveaux. Le monte charge est équipé d'un vérin hydraulique assurant le mouvement du plateau supportant la charge.

Deux boitiers de commandes (un par niveau) sont à la disposition des opérateurs pour piloter le monte charge, avec sur chaque boitier, les commandes : Montée, Descente et Arrêt d'urgence.

Règles de fonctionnements:

• La mise en mouvement du monte charge n'est pas possible si un des portillons est ouvert. • La pompe hydraulique doit être en marche 3 secondes avant l'ouverture des vannes hydrauliques. • La pompe hydraulique est arrêtée à la fin du mouvement du vérin (info des capteurs de fin de course) • Les vannes sont fermées par les capteurs de fin de course. • Les boutons d'arrêt d'urgence ferment la vanne ouverte et arrête la pompe hydraulique

Page 42: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 42

Tableau des entrées sorties :

Désignation nature Bouton montée (bas) entrée Bouton descente (bas) entrée Arrêt d'urgence (bas) entrée Bouton montée (haut) entrée Bouton descente (haut) entrée Arrêt d'urgence (haut) entrée Sécurité porte fermée (bas) entrée Sécurité porte fermée (haut) entrée Fin de course Haut entrée Fin de course Bas entrée Commande moteur pompe sortie Commande électrovanne montée sortie Commande électrovanne descente Sortie Commande de verrouillage portillon bas Sortie Commande de verrouillage portillon haut Sortie

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 43: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 43

Projet N° 17 : Accesseur

Objectif : gérer un ascenseur sur 3 niveaux (Rez-de-chaussée, Etage 1, Etage 2). Le fonctionnement décrit ci-dessous est volontairement simplifié. dans le cas d'une installation réelle, il y a évidemment d'autres fonctions traitées, notamment toutes les fonctions de sécurité.

Principe de fonctionnement : Lorsque l'ascenseur est sur un niveau, la porte de l'ascenseur est ouverte et la porte palière est déverrouillée. La mise en mouvement de l'ascenseur est déclenchée par les boutons d'appel des autres niveaux ou les boutons de choix d'étage en cabine. Le mouvement peut commencer si toutes les portes palières sont fermées et verrouillées et la porte de la cabine fermée. Il y a arrêt du mouvement lorsque la cabine est arrivée sur le capteur de position de l'étage demandé. La porte palière du niveau d'arrivée est alors déverrouillée et la porte de la cabine est ouverte. Le système est alors en attente d'une nouvelle demande d'un usager.

Page 44: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 44

Tableau des entrées sorties :

Désignation nature Bouton appel ascenseur Niveau RDC entrée Bouton appel ascenseur Niveau 1 entrée Bouton appel ascenseur Niveau 2 entrée Bouton cabine de choix niveau RDC entrée Bouton cabine de choix niveau 1 entrée Bouton cabine de choix niveau 2 entrée Capteur position de la cabine niveau RDC entrée Capteur position de la cabine niveau 1 entrée Capteur position de la cabine niveau 2 entrée Capteur porte fermée RDC entrée Capteur porte fermée 1 entrée Capteur porte fermée 2 entrée Commande moteur Montée sortie Commande moteur Descente sortie Ouverture Porte ascenseur sortie Verrouillage porte extérieure RDC sortie Verrouillage porte extérieure 1 sortie Verrouillage porte extérieure 2 sortie

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme, les algorithmes, un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (voir l'exemple en fin de document)

Page 45: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 45

Projet N° 18 : Animation des yeux d'un automate

Objectif : donner vie aux yeux d'un automate. La sculpture d'un arbre est équipée d'un mécanisme simulant des yeux. Des servomoteurs permettent l'animation des yeux horizontalement et des paupières verticalement. Lorsque cette sculpture est exposée, on souhaite la rendre vivante et la faire réagir à l'approche des visiteurs. Deux détecteurs de mouvements permettent la détection de l'approche d'un visiteur. L'arbre doit alors ouvrir les yeux. Afin de lui donner vie, il faut orienter les yeux vers le visiteur au moment de l'ouverture des paupières. Ensuite il faut faire bouger les yeux de façon aléatoire afin de simuler un regard attentif et vivant. Les paupières doivent également se fermer rapidement avec une fréquence aléatoire mais réaliste.

Toutes autres propositions d'animations permettant d'améliorer la simulation d'un être vivant sont possibles.

Schéma du mécanisme

Implantation dans la sculpture

Page 46: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 46

Les mouvements sont assurés par des servomoteurs ayant pour consigne une position correspondant à un angle.

Servomoteur Position Angle Yeux Au centre 90° A droite 30° A gauche 150° Paupières En haut 170° En bas 10°

Tableau des entrées sorties :

Désignation nature Capteur détection de mouvement droit entrée Capteur détection de mouvement gauche entrée Commande servomoteur yeux (30° à 150°) sortie Commande servomoteur paupières (0° à 180°) sortie

Travail demandé : - Document d'accompagnement comprenant les explications concernant le fonctionnement du programme , les algorithmes, et un guide d'utilisation du programme. - Le projet contenant les codes sources et le fichier .exe

Le programme devra fonctionner dans une fenêtre DOS. Les entrées seront simulées au clavier et les sorties seront visualisées à l'écran en utilisant au mieux les capacités graphiques de la fenêtre DOS (animation des yeux et des paupières).

Page 47: MICRO PROJETSsesamebox.fr/iut/a2i/Micro-Projet-C.pdf · fonctionnement du programme, son architecture et les principaux algorithmes, le ou les grafcets et également un document d'aide

Micro projets A2I 2016-2017 Page 47

Exemple d'affichage d'un programme dans la console DOS

(Exemple du portail automatique)

P O R T A I L A U T O M A T I Q U E E n t r é e s E t a t T T é l é c o m m a n d e 1 O F c O u v e r t u r e 0 F F c F e r m e t u r e 0 S S é c . O b s t a c l e 0 I B a r r i è r e I R 0 M S o r t i e s ← = = = = = = = = = = = M o t . O u v e r t u r e 1 M o t . F e r m e t u r e 0 G y r o p h a r e 1 G r a f c e t 0 1 2 3 4 5 6 7 8 9 E t a p e e n c o u r s : O u v e r t u r e p o r t a i l Q : Q u i t t e r

Les touches [T], [O], [F], [S], [I] sont utilisées pour modifier l'état des entrées afin de faire évoluer le grafcet. La touche [Q] est utilisée pour quitter le programme.