Cours:DevoirPOO2Ressources
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 !!
Sommaire
Analyse et utilisation
Classes à disposition
Voici l'archive contenant les fichiers des classes listées ci-dessous : Media:ClassesEvaluationPOO.zip
Diagramme de classes
(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
(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.
(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
.
(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 :
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
(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()
(2 points) Instancier un objet de type IkeaTradfri
dans l'application pour commander la led dimmable.
Classe Gradateur
(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
etvoieB = false
: émettre le signalplus()
- si
voieA = true
etvoieB = false
: émettre le signalmoins()
- si
(2 points) Instancier un objet de type Gradateur
dans l'application pour commander les leds du barregraphe.