Vous êtes sur la page 1sur 4

TP – I47GE Microcontrôleur - Promo 120

Gestion d’un carrefour routier

Ces travaux pratiques se déroulent sur 2 séances de 4 heures. Ils doivent permettre
d’assimiler le cours d’électronique programmable du chapitre I47GE.
Ils mettent en œuvre un microcontrôleur 32 bits de la famille ARM produit par ATMEL. Le
support physique de TP est une carte électronique Arduino Due. La programmation du
composant est réalisée en langage C Arduino. L’outil de développement est l’IDE Arduino.
Les postes de travail de la salle de TP sont connectés à Internet, il est autorisé d’utiliser les
ressources présentes sur Internet. Attention, on perd rapidement du temps lors des
recherches sur Internet. Les liens utiles sont :
http://www.arduino.cc/
Vous devez démarrer une session avec votre compte Icam et votre mot de passe. Vous
pouvez travailler dans l’espace __donnees__ du disque C : du PC ou dans vos données
personnelles. Les 2 séances sont dépendantes, il est donc nécessaire de sauvegarder le
travail de la première séance pour faire la deuxième séance.
Description du TP
Le TP porte sur la gestion d’un croisement routier équipé de feux tricolores et de feux pour
piétons. Les piétons ont accès à 2 boutons.
Les voyants et boutons sont montés sur un circuit imprimé ‘carte mère’ qui porte une carte
Arduino DUE.
Par souci pédagogique, nous avons volontairement laissé les cartes électroniques
accessibles pour les garder visibles et montrer ainsi l’assemblage des composants. Cet
ensemble est alors fragile, il convient de le manipuler avec précautions. Les cartes CPU
comme la carte Arduino sont sensibles aux décharges électrostatiques, il est important de
ne pas poser les doigts sur les connections.
Prise en main du TP.
Dans un répertoire de travail personnel, recopier le répertoire suivant dans un répertoire
personnel auquel vous pourrez accéder lors des 2 séances de TP :
https://moodle.icam.fr/ I4.7-GE-Elec…[NANTES] Travaux pratiques sketch_initial
Aller dans C:\Arduino_1.6.12 et lancer le programme ARDUINO. Ouvrir le fichier
sketch_initial.ino de votre répertoire personnel dans l’environnement de développement
Arduino.
Dans « Outils_type de carte » cliquer sur « Gestionnaire de carte « pour ajouter le pack
« DUE ». Sélectionner la carte Arduino Due (programming port) dans l’onglet Outils et
valider le port comx correspondant à la connexion USB.

YD-MG-RA 1/4
TP – I47GE Microcontrôleur - Promo 120

Cliquer sur le bouton ‘flèche’ téléverser et attendre la fin du chargement du programme dans
l’Arduino. Les 4 feux rouges doivent clignoter.
Il est important de lire et d’analyser les fichiers sketch_initial.ino et pin_definition.h dans
lesquels on trouve respectivement le programme et la définition des voyants, boutons et
entrées analogiques.
Pour chaque étape de déroulement du TP possédant une machine d’état, on indiquera le
numéro d‘état de la machine d’état en cours à l’aide d’un nombre binaire affiché sur les leds
LED1 à LED8.
Le langage C Arduino et en particulier la mise en œuvre des interruptions sont décrits à la
page : http://arduino.cc/en/Reference/HomePage
Dès que cela est possible, on transformera des portions de programme identiques utilisées
plusieurs fois en fonction. C’est le cas par exemple pour l’affichage du numéro de machine
d’état sur les 8 leds.

YD-MG-RA 2/4
TP – I47GE Microcontrôleur - Promo 120

Déroulement du TP.

Pour chaque exercice vous proposerez un diagramme d’état avant de le coder


1) Modifier le fichier sketch_initial.ino pour faire clignoter les 4 leds oranges
2) Faire clignoter les 4 leds oranges avec une période de 4 secondes
3) Initialiser la TOTALITE des entrées/sorties (ILS…)
4) Créer deux fonctions pour spécifier le mode de fonctionnement des E/S de votre carte
(Init_Entrees() puis Init_Sorties()
5) Créer une fonction pour tester toutes les Leds de votre carte.
6) Créer une fonction eteindre_feux() pour initialiser à « LOW » l’état de toutes les
sorties de votre carte.
7) Pour le feu nord, réaliser la séquence ‘vert, orange, rouge, vert …’ avec les durées
5s (vert), 1s (orange) et 5s (rouge).
8) Simplifier votre code en utilisant une fonction du type : Feu_Nord(Rouge) ;
(introduction de type énuméré).
9) Ecrire une fonction du type : Feu(Nord,Rouge) ; (pour ceux qui sont rapides)
10) Réaliser ensuite la gestion complète du carrefour.
11) On réalisera une machine d’état pour étudier le fonctionnement et ensuite la coder
en langage C.
12) Le changement de priorité peut être activé par appui sur BP1 (simule la clé de l’agent
de circulation). À chaque appui sur BP1, l’axe Nord-Sud devient prioritaire s’il n’y était
pas. L’axe Est-Ouest doit passer à l’orange avec une durée normale avant de passer
au rouge.
13) Pourquoi l’interrupteur n’est-il pas pris en compte immédiatement ?

Pour la suite du TP nous vous fournirons une fonction temporisation non


bloquante à utiliser obligatoirement

14) Réécrire la machine d’état en utilisant la fonction « délai non bloquante »


15) Ajouter la gestion des voyants piétons avec des fonctions (nom du feu (couleur))
16) Ajouter la gestion des boutons Appel – Piéton. (Utilisation d’un mode polling,
scrutation des boutons)
17) Ajouter l’arrivée du bus. Sous les voies nord et ouest, 4 ILS(*) (IL1 à IL4) permettent
de détecter la présence du bus. Lorsqu’un bus arrive sur IL4, son feu doit passer au
vert (les 3 autres feux restent au rouge) et le carrefour redevient normal lorsque ce
bus passe sur IL2. Attention au retour à une séquence normale, il faut tenir compte
des piétons.
18) Prendre en compte l’appel piéton pendant le passage du bus (en interruption). Au
passage sur IL2 du Bus, le cycle doit rendre prioritaire le passage Piéton qui a
demandé le passage.

YD-MG-RA 3/4
TP – I47GE Microcontrôleur - Promo 120

19) À l’aide du capteur LDR, détecter la nuit et passer sur un croisement avec feux
orange clignotants. Puis retour au jour. Dans un premier temps, la valeur lue sur le
capteur LDR sera affiché sur le terminal Arduino à l’aide d’une communication série
(utiliser et adapter les fichiers « exemples » du logiciel Arduino), puis on déterminera
un seuil pour simuler la détection du passage jour nuit simulé par le passage d’une
main devant le capteur.
(*) ILS : interrupteur à lame souple qui se ferme lorsque l’on approche un aimant.

YD-MG-RA 4/4

Vous aimerez peut-être aussi