TP3 Temps Réel : Arduino
Procédure de mise en route
- Mettez-vous dans le répertoire contenant la version
de Lustre que vous avez installé
(pas dans le répertoire Lustre mais au dessus).
- Installez l'environnement du TP :
GET http://perso.univ-lyon1.fr/thierry.excoffier/COURS/COURS/TEMPS_REEL/tp3.tar.gz | zcat | tar -xvf -
- Pour vérifier que l'environnement fonctionne, lancez :
cd TP_arduino ; make
cela doit afficher : regtest_demo_main OK
Droits d'accès
Par défaut seul root a accès au périphérique
permettant de programmer l'Arduino.
Pour donner l'accès à tout le monde et tout le temps :
su -c "make udev" # En salle TP réseau
sudo "make udev" # Sur vos machines Linux perso.
Un chmod n'est pas suffisant car il faut le refaire
à chaque fois que l'Arduino est branché.
Go !
Pour jouer :
- Prenez un photo du montage pour être capable
de rebrancher un fil si jamais il y en a un qui se décroche.
- Branchez l'Arduino
- Tapez : make demo_main.run
- Le compteur va jusqu'à 9 puis la led rouge s'allume.
- Pendant que le compteur s'incrémente le buzzer fait du bruit.
- Le point à coté du chiffre est allumé si l'un des 3 boutons
est appuyé.
- A partir du moment ou un bouton est appuyé ou relaché,
le compteur repart de 0.
- A chaque fois que la led rouge s'allume la led jaune
change d'état.
- La vitesse d'incrément du compteur dépend du bouton appuyé.
Les fichiers
Ceux qui sont fournis :
- Makefile : contient entre autres les buts :
- regtest_demo_main : Vérifie que cela fonctionne.
- demo_main : Compile l'exemple Lustre.
On peut le lancer en tapant ./demo_main 0 0 0 1 1 1
pour indiquer que les 3 boutons ne sont pas appuyés
au premier pas d'exécution et tous appuyés au second.
On peut prolonger la liste des arguments.
- demo_main.exe : Création de l'exécutable Arduino.
- demo_main.run : Lance l'exécution sur l'Arduino.
- udev : configure les droits d'accès du périphérique.
- Welcome.html : Le sujet de TP.
- arduino_compat.h : permet de développer sous Unix
et sous Arduino avec le même code.
- demo.lus : Le code de l'application.
- demo_main.c : Interface entre Arduino et le code Lustre.
Arduino
Quelques points importants :
- Vous pouvez le conserver entre les séances de TP,
mais vous devez en prendre la responsabilité personnelle.
- Débranchez-le avant de changer le câblage.
- Mettez toujours des résistances pour ne pas faire
de courts-circuits.
- Toutes les broches digitales de l'Arduino sont prises
par l'afficheur 7 segments (sorties), les 3 boutons (entrées)
et le buzzer (sortie).
- Les 2 premières broches analogiques sont prises pour
commander les 2 leds.
- Une fois votre programme transféré dans l'Arduino,
il y reste même s'il est éteint.
Votre travail
Deux petits exercices.
Bascule simple
Modifiez le fichier exo1.lus
pour que quand on appuie sur le bouton près de l'afficheur
cela change l'état de la led rouge qui au départ sera éteinte.
Les fichiers sont en fait déjà remplis et si vous testez sous
Linux cela semble fonctionner :
make exo1_main && ./exo1_main 0 0 1 0 0 1 0 0
La led reste allumée pendant 3 pas de temps.
Mais si vous lancez make exo1_main.run et testez sur l'Arduino,
cela fait n'importe quoi...
La raison est simple : l'interrupteur ne passe pas proprement
de 0 à 1 et hésite longuement aléatoirement entre les 2 états.
Modifiez le code pour que cela fonctionne.
Il faut considérer que le bouton est resté 2000 fois dans
le même état pour valider un changement d'état.
Veilleuse, codes et phares
Faites tourner le TP précédent sur l'Arduino :
- Veilleuse : le point de l'afficheur 7 segment
- Code : la led rouge
- Phare : la led jaune
- LEFT_BUTTON : TD
- MIDDLE_BUTTON : CP
- RIGHT_BUTTON : TI
Vous nommerez les fichiers exo2.lus et exo2_main.c,
le but est déjà défini dans le Makefile.
N'oubliez pas de nommer le noeud exo2.
Rendu de TP
Vous déposez les 4 fichiers sur TOMUSS avant le prochain cours.