Cours:DevoirPOO2Ressources

De troyesGEII
Révision datée du 4 octobre 2024 à 15:28 par Bjacquot (discussion | contributions) (Page créée avec « <accesscontrol>Acces:Prof</accesscontrol> {{Rouge|'''Attention''', on utilise les GPIO de façon différente que pendant les séances.}} {{Rouge|Même si le nom est ide... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Il s’agit d’une page protégée.


Attention, on utilise les GPIO de façon différente que pendant les séances.

Même si le nom est identique aux classes déjà utilisées, elles peuvent être différentes !!

Analyse et utilisation

Classes à disposition

Voici l'archive contenant les fichiers des classes listées ci-dessous : Media:ClassesEvaluationPOO.zip ‎

Diagramme de classes

Question.jpg (2 points) Réaliser un diagramme des classes déclarées dans les fichiers suivants :

  • eclairagedimmable.h
  • barregraphe.h
  • leddimmable.h
  • bouton.h

Remarque :

  • Vous listerez les signals avec les méthodes en indiquant signal devant le nom

Programme

Création du projet

Question.jpg (2 points) Faire un nouveau projet :

  • de type QWidget application
  • ajouter un bouton sur l'interface graphique pour quitter l'application
  • ajouter les fichiers des classes données en début d'énoncé
  • ajouter à la fin du fichier .pro la ligne LIBS += -lpigpio

Utilisation de la classe LedDimmable

Une led est connectée sur la sortie pwm 0.

On souhaite pouvoir modifier l'état (allumée/éteinte) et la puissance d'éclairage de cette led à l'aide de 4 boutons placés sur l'interface graphique.

Question.jpg (3 points) Ecrire un programme qui répond à ce cahier des charges :

  • il doit y avoir 5 boutons sur l'interface graphique (on, off, +, -, quitter appli)

Utilisation de la classe Barregraphe

On ajoute la gestion des 4 leds (broches 18/19/26/27) à l'aide de la classe Barregraphe.

Question.jpg (3 points) Ajouter à votre programme :

  • 1 objet de type Barregraphe
  • 2 boutons sur l'interface graphique
    • l'un pour augmenter la puissance du Barregraphe
    • l'autre pour diminuer la puissance du Barregraphe
  • faire en sorte que
    • le bouton pour allumer la LedDimmable allume également le Barregraphe
    • le bouton pour éteindre la LedDimmable éteigne également le Barregraphe

Conception

On souhaite pouvoir commander les éclairages à l'aide de dispositifs augmentant ou diminuant la puissance d'éclairage :

  • représentés par une classe VariateurPuissance

qui sera spécialisée en

  • une classe IkeaTradfri représentant un module à deux boutons (un bouton "plus" et un bouton "moins")
  • une classe Gradateur représentant un module codeur incrémental

selon le diagramme de classes suivant :

Eval2022-diagrammeClasse2.png

Rappel : # spécifie un attribut ou une méthode protected

Pour mémoire les ports GPIO utilisés par les modules sont les suivants :

n° GPIO Module n° GPIO Module
5 Encodeur voie A 16 Bouton poussoir 1 (vert?)
6 Encodeur voie B 17 Bouton poussoir 2 (rouge?)

Classe IkeaTradfri

Question.jpg (3 points) Ajouter au projet l'implémentation de IkeaTradfri :

  • un appui sur le bouton vert doit émettre le signal plus()
  • un appui sur le bouton rouge doit émettre le signal moins()

Question.jpg (2 points) Instancier un objet de type IkeaTradfri dans l'application pour commander la led dimmable.

Classe Gradateur

Question.jpg (3 points) Ajouter au projet l'implémentation de Gradateur :

  • Le codeur se comporte comme deux boutons (de type Bouton)
  • Le sens de rotation peut être détecté en observant un front, descendant ou montant, sur la voieB et alors
    • si voieA = false et voieB = false : émettre le signal plus()
    • si voieA = true et voieB = false : émettre le signal moins()

Question.jpg (2 points) Instancier un objet de type Gradateur dans l'application pour commander les leds du barregraphe.