Exercice : Mesures avec affichage type « bargraphe »

Simulateur

Ce projet est à réaliser avec le simulateur en ligne Wokwi. Les instructions pour le rendu du projet sont indiquées en fin de document.

Présentation

On souhaite afficher, sur un système de type « bargraphe » à LED, le résultat de mesures issues d'un capteur. Le nombre de LED utilisées, 5 ou 10, du bargraphe sera un paramètre du programme et permettra l'initialisation d'une classe Bargraph.

Le schéma ressemble à celui-ci :

Schéma du systèmeInformations[1]

Fonctionnement général

2 classes sont à prévoir :

  • Sensor, pour la gestion du capteur,

  • Bargraph, pour la gestion du bargraphe

Il est cependant conseillé de mettre en place une troisième classe Led, pour le pilotage des LEDs du bargraphe.

La classe Sensor gère la lecture du capteur. Elle comportera, au minimum, une fonction membre getValue() qui renvoie la valeur générée par le capteur. Son constructeur permettra, notamment, l'initialisation de la connexion au(x) port(s) (à voir selon le schéma fourni sur la plate-forme pédagogique[2]).

La classe Bargraph gère l'affichage qui doit s'adapter au nombre de LED (et qui est fourni en argument au constructeur de la classe). Lorsque ce nombre est égal à 5, une LED sur deux sera utilisée :

Schéma du système, fonctionnement à 5 LED : 1 LED sur 2 s'allume.Informations[3]

La classe Bargraph comportera la fonction membre setDisplay() qui permet de mettre à jour l'affichage à partir d'une valeur numérique fournie en argument. Le constructeur permettra notamment l'initialisation de la connexion au port (seul le numéro de port correspondant à la LED la plus à droite sera fourni) ainsi que le nombre de LED utilisées pour l'affichage (constante MAX_LED qui ne peut avoir que 5 ou 10 comme valeur)

Démonstration

Voici comment fonctionne l'affichage pour chacun des modes, 5 ou 10 LEDs, les valeurs les plus élevées étant vers la droite, les plus faibles vers la gauche :

Position temporelleDurée
Démonstration du fonctionnement du bargraphe pour mode 5 Leds. Les valeurs les plus élevées sont à droite.
Informations[4]
Position temporelleDurée
Démonstration du fonctionnement du bargraphe pour mode 10 Leds. Les valeurs les plus élevées sont à droite.
Informations[5]

Programme principal

Pour des raisons d'équité dans la correction, la structure du programme principal est imposée :

1
/*
2
    - Les valeurs numériques seront à adapter en fonction du schéma fourni ou pour changer le nombre de LED utilisées (5 ou 10).
3
    - Il est possible également d'ajouter (ou modifier) des constantes si nécessaire
4
*/ 
5
#define PORT_LED 0 //Adresse de la première LED du bargraphe, à ajuster en fonction du schéma
6
#define PORT_SENSOR A7 // à ajuster en fonction du schéma fourni
7
#define TEMPO_MESURES 200 //à ajuster en fonction du nombre de mesures par seconde souhaité
8
#define MAX_LED 10 // Deux valeurs possibles : 5 ou 10. Le projet doit fonctionner pour chacune des 2 valeurs (après relance du programme).
9
10
11
/*
12
	**************************************************************	
13
  * La structure générale suivante ne doit pas être modifiée   *
14
  * Il est cependant possible d'augmenter le nombre d'arguments*
15
  * du constructeur de la classe Sensor en fonction du type de *
16
  * capteur utilisé                                            *
17
	**************************************************************	
18
*/
19
20
#include "led.h"
21
#include "bargraph.h"
22
#include "sensor.h"
23
24
Sensor sensor(PORT_SENSOR); //Création d'un objet pour lire le capteur
25
Bargraph bargraph(PORT_LED,MAX_LED); //Création d'un objet bargraphe : on fournit le numéro de port de la première LED et le nombre de LEDs (5 ou 10)
26
27
void setup() {
28
}
29
30
void loop() {
31
  bargraph.setDisplay(sensor.getValue()); //Lecture du capteur et affichage sur le bargraphe 
32
  delay(TEMPO_MESURES);//Pour éviter d'avoir trop de mesures.
33
}

Eléments fournis

  • Le schéma, disponible sur la plate-forme pédagogique, est fourni sous forme d'un fichier JSON à copier/coller dans l'onglet diagram.json, en replacement du schéma existant. Attention, le schéma fourni est différent pour chaque étudiant/étudiante et ne doit pas être modifié.

  • le programme principal est à respecter mais il sera nécessaire d'ajuster la définition des constantes en fonction du schéma fourni ainsi que les arguments d'appel de fonctions membres ou de constructeurs. Il est également possible d'ajouter de nouvelles constantes.

Recommandation

Il est fortement recommandé de consulter la documentation liée aux composants utilisés :

Accès à la documentation d'un composantInformations[6]

Wokwi fournit de nombreux exemples d'utilisation des différents composants (bargraphe et capteurs notamment)

Concernant la notation du projet, la grille d'évaluation qui sera utilisée pour l'évaluation de votre travail est consultable en cliquant sur « Dépôt du projet » (sur la plate-forme pédagogique, rubrique « Projet »).

Question

Proposez une solution en appliquant obligatoirement les principes de la Programmation Orientée Objet. Le programme doit fonctionner pour les 2 situations (réglées par la constante MAX_LED) : 5 ou 10 LEDs.

Question

Il n'y aura pas de compte-rendu pour ce projet : les commentaires intégrés au projet devront donc être les plus explicites possible.