Cours:PooTD1 ledsbps : Différence entre versions
(→travail à réaliser) |
(→Classe Bouton) |
||
| (11 révisions intermédiaires par 2 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
[[Cours:3105|{{Rouge|'''Retour à la liste des Tds'''}}]] | [[Cours:3105|{{Rouge|'''Retour à la liste des Tds'''}}]] | ||
| + | |||
| + | |||
| + | = Bonnes pratiques = | ||
| + | |||
| + | * Constructeurs | ||
| + | ** Accolades pour les appels | ||
| + | ** Initialisation des attributs avant le corps du constructeur | ||
| + | * Méthodes | ||
| + | ** Parenthèses pour les appels | ||
=1ère classe= | =1ère classe= | ||
| Ligne 10 : | Ligne 19 : | ||
*Dans l'arborescence de votre projet, | *Dans l'arborescence de votre projet, | ||
**Ajouter des fichiers existants | **Ajouter des fichiers existants | ||
| + | *Vérifier/ajouter les noms des fichiers pour les nouvelles classes (fichers *.h et *.cpp) | ||
| − | == | + | ==Classe Lampe== |
{|style="vertical-align:middle; width:100%; text-align:left; " | {|style="vertical-align:middle; width:100%; text-align:left; " | ||
| Ligne 27 : | Ligne 37 : | ||
Lampe(); | Lampe(); | ||
void allumer(); | void allumer(); | ||
| − | + | ||
| − | |||
}; | }; | ||
| Ligne 67 : | Ligne 76 : | ||
</source> | </source> | ||
| − | == | + | * Tester le bon fonctionnement |
| + | * Ajouter une méthode <code>eteindre()</code> | ||
| + | |||
| + | ==Clignotement== | ||
<source lang=cpp> | <source lang=cpp> | ||
| Ligne 73 : | Ligne 85 : | ||
using namespace std; | using namespace std; | ||
... | ... | ||
| − | usleep( | + | usleep( dureeEnMicrosecondes ); |
sleep( dureeEnSecondes ); | sleep( dureeEnSecondes ); | ||
</source> | </source> | ||
| − | == | + | * Faire clignoter la lampe |
| + | * Ajouter une méthode <code>Changer()</code> | ||
| + | |||
| + | ==Travail à réaliser== | ||
| + | |||
| + | * Ajouter un second constructeur avec un paramètre pour cibler d'autres GPIO. Nécessitera un attribut interne à la classe, qui sera déclaré en visibilité <code>private</code>. | ||
| + | * Faire clignoter plusieurs leds | ||
| + | |||
| + | =Classe Bouton= | ||
| + | |||
| + | |||
| + | {|style="vertical-align:middle; width:100%; text-align:left; " | ||
| + | |- | ||
| + | | {{boîte déroulante/début|titre=bouton.h}} | ||
| + | <source lang=cpp> | ||
| + | #ifndef BOUTON_H | ||
| + | #define BOUTON_H | ||
| + | |||
| + | class Bouton | ||
| + | { | ||
| + | public: | ||
| + | Bouton(); | ||
| + | int getValue(); | ||
| + | }; | ||
| + | |||
| + | #endif // BOUTON_H | ||
| + | </source> | ||
| + | {{boîte déroulante/fin}} | ||
| + | || {{boîte déroulante/début|titre=bouton.cpp}} | ||
| + | <source lang=cpp> | ||
| + | #include "bouton.h" | ||
| + | #include <pigpio.h> | ||
| + | #include <QDebug> | ||
| + | |||
| + | Bouton::Bouton() | ||
| + | { | ||
| + | qDebug()<<"création d'un bouton"; | ||
| + | gpioInitialise(); | ||
| + | gpioSetMode(16,PI_INPUT); | ||
| + | |||
| + | } | ||
| − | + | int Bouton::getValue() | |
| + | { | ||
| + | int etat = gpioRead(16); | ||
| + | qDebug()<<"je suis dans l'état : "<<etat; | ||
| + | return etat; | ||
| + | } | ||
| + | </source> | ||
| + | {{boîte déroulante/fin}} | ||
| + | |} | ||
| − | + | * Tester le bon fonctionnement de cette classe | |
| + | * Commander une led avec un bouton | ||
| + | * ajouter un 2ème bouton | ||
| + | **1 clic sur un bouton allume la led | ||
| + | **1 clic sur l'autre bouton éteint la led | ||
| + | *changer l'état de la led à chaque appui sur un bouton | ||
Version actuelle datée du 10 septembre 2025 à 15:52
Retour à la liste des Tds
Sommaire
Bonnes pratiques
- Constructeurs
- Accolades pour les appels
- Initialisation des attributs avant le corps du constructeur
- Méthodes
- Parenthèses pour les appels
1ère classe
Préparation du projet
- Créer un nouveau projet de type "QT en console"
- Choisir le kit "piTp"
- ajouter à la fin du fichier .pro la ligne
LIBS += -lpigpio - Dans l'arborescence de votre projet,
- Ajouter des fichiers existants
- Vérifier/ajouter les noms des fichiers pour les nouvelles classes (fichers *.h et *.cpp)
Classe Lampe
| lampe.h #ifndef LAMPE_H
#define LAMPE_H
#include <QObject>
class Lampe
{
public:
Lampe();
void allumer();
};
#endif // LAMPE_H
|
lampe.cpp #include "lampe.h"
#include <pigpio.h>
Lampe::Lampe()
{
gpioInitialise();
gpioSetMode(5,PI_OUTPUT);
}
void Lampe::allumer()
{
gpioWrite(5,true);
}
|
#include <QCoreApplication>
#include "lampe.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Lampe l1{};
l1.allumer();
return a.exec();
}
- Tester le bon fonctionnement
- Ajouter une méthode
eteindre()
Clignotement
#include <unistd.h>
using namespace std;
...
usleep( dureeEnMicrosecondes );
sleep( dureeEnSecondes );
- Faire clignoter la lampe
- Ajouter une méthode
Changer()
Travail à réaliser
- Ajouter un second constructeur avec un paramètre pour cibler d'autres GPIO. Nécessitera un attribut interne à la classe, qui sera déclaré en visibilité
private. - Faire clignoter plusieurs leds
Classe Bouton
| bouton.h #ifndef BOUTON_H
#define BOUTON_H
class Bouton
{
public:
Bouton();
int getValue();
};
#endif // BOUTON_H
|
bouton.cpp #include "bouton.h"
#include <pigpio.h>
#include <QDebug>
Bouton::Bouton()
{
qDebug()<<"création d'un bouton";
gpioInitialise();
gpioSetMode(16,PI_INPUT);
}
int Bouton::getValue()
{
int etat = gpioRead(16);
qDebug()<<"je suis dans l'état : "<<etat;
return etat;
}
|
- Tester le bon fonctionnement de cette classe
- Commander une led avec un bouton
- ajouter un 2ème bouton
- 1 clic sur un bouton allume la led
- 1 clic sur l'autre bouton éteint la led
- changer l'état de la led à chaque appui sur un bouton