Cours:InfoS1EvalTP1
Il s’agit d’une page protégée.
Programmation d'un radar de recul
L'objectif est de programmer un radar de recul en utilisant un télémètre ultrason (HC-SR04) et d'afficher sur la série de leds l'information de proximité d'un obstacle.
Sommaire
Vérification de la liaison série
Vous allez montrer que vous savez utiliser la liaison série.
On rappelle qu'une variable doit être déclarée en type char pour être affichée sous forme de caractère, le type int permet d'afficher son code ASCII.
Le code ASCII de 'A' = 65 et celui de 'z' = 65+25+32 pour information
L'affichage doit se faire en utilisant des boucles pas uniquement le texte "ABCDEFGHIJKLM".
(3 points) écrire un programme qui :
- affiche au démarrage du programme : "Alphabet"
- répète en permanence :
- Afficher les lettres en majuscule de l'alphabet sur deux lignes
- sauter une ligne
- Afficher les lettres en minuscule de l'alphabet sur deux lignes dans le sens inverse
- sauter une ligne
- attendre 2s et recommencer
exemple d'affichage :
Alphabet ABCDEFGHIJKLM NOPQRSTUVWXYZ
zyxwvutsrqpon mlkjihgfedcba
ABCDEFGHIJKLM NOPQRSTUVWXYZ
Marche arrière
Pour détecter le passage de la marche arrière sur un véhicule, un bouton poussoir est installé sur la boite de vitesse des véhicules mécaniques. Quand on enclenche la marche arrière avec le levier de vitesse, la fourchette qui enclenche le pignon de marche arrière vient appuyer sur le bouton poussoir. Cela permet d'allumer les feux de recul et de faire clignoter une led sur le tableau de bord.
Quand on retire la marche arrière les feux de recul s'éteignent ainsi que la diode du tableau de bord.
Nous utiliserons ici le bouton du haut qui est relié sur la broche 3 arduino, ainsi que la led L1 (broche 5) pour indiquer que l'on est en marche arrière et la led L2 (broche 8) qui symbolise les feux de recul.
Si vous utilisez la librairie TimerOne, vous pourrez utiliser la méthode Timer1.detachInterrupt() pour arrêter le clignotement.
(4 points) Réaliser le programme qui allume les LEDs pour indiquer la marche arrière lorsqu'on appuie sur le bouton.
Télémètre à ultrasons
Le module HC-SR04 est connecté de la façon suivante : Toute erreur de connexion détruira irrémédiablement le module HC-SR04
| Fonction | Broche arduino |
|---|---|
| Echo | 6 |
| Trig | 7 |
On utilisera la librairie hcsr04 créée par Martin Sosic.
Vous trouverez un exemple d'utilisation sur la page suivante : https://github.com/Martinsos/arduino-lib-hc-sr04
(3 points) Modifier votre programme pour faire une mesure de distance toutes les 250ms si on est en marche arrière
LEDs couleur
Vous allez utiliser les leds couleurs que vous avez utilisé pour le TP chenillard.
Le télémètre a une portée d'environ 4 m, si on la dépasse la distance est égale à -1. Pour faire les tests de votre code on choisira une échelle 1/10.
On affichera une information de distance de la façon suivante sur les LEDs :
- si la distance est grande ( d > 3m ), on allume les 8 leds en vert
- si la distance est entre ( 1m ≤ d ≤ 3m ) on allumera les LEDs de façon proportionnelle à la distance :
- distance 3m : 8 en vert
- ...
- distance 2m : 4 en vert, 4 en orange
- ...
- distance 1m : 8 en orange
- si la distance est courte ( d < 1m ) on allumera les LEDs de façon proportionnelle à la distance :
- distance ?m : 8 en rouge
(4 points) Modifier votre programme réalisant ce fonctionnement en marche arrière uniquement sinon les LEDs sont éteintent. À quelle distance du mur les LEDs sont-elles toutes rouges, sachant que le télémètre ne peut pas mesurer une distance nulle et qu’il faut garder une marge suffisante pour s’arrêter ?
Contrôle de la luminosité des LEDs
On utilisera dans cette partie le potentiomètre P1 sur votre carte. Il correspond à la broche arduino A6.
(3 points) Modifier votre programme pour que le potentiomètre P1 permette de changer la luminosité des leds couleurs.
Amélioration de la précision de mesure : mesure de température
La vitesse de propagation du son dans l'air dépend de la température. L'équation suivante modélise cette relation :
c = 20,05 * sqrt(T) avec T en K, et c la vitesse du son.
(3 points) Modifier votre programme pour tenir compte de la température dans la mesure de distance :
- reprenez le TP sur la mesure de température pour mesurer la température en °C
- utiliser la fonction measureDistanceCm(temperature_en_degre_c) à la place de la fonction measureDistanceCm() pour tenir compte de la température dans la mesure de distance.
- vous afficherez dans le moniteur les distances en centimètre en tenant compte de la température et sans.