Cours:PooTD1 ledsbps

De troyesGEII
Aller à : navigation, rechercher
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

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