micro projetssesamebox.fr/iut/a2i/micro-projet-c.pdf · fonctionnement du programme, son...
Post on 24-Jun-2020
8 Views
Preview:
TRANSCRIPT
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 (d.raoult.iut@gmail.com). 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
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.
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.
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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)
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
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
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
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)
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
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)
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.
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.
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.
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;
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
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
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
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
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)
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.
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)
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
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)
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
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)
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.
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)
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
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).
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.
top related