Utilisation d'une sortie GPIO
Question
Créez un projet nommé appGpio disposant d'une IHM contrôlant une LED, contenant :
Type d'élément | Nom dans le code | Info |
Bouton |
| Bouton start/stop du GPIO |
Label |
| Affichage de l'image représentant la LED allumée ou éteinte. |
Combo box |
| Numéro de la broche GPIO à utiliser. |
Bouton |
| Initialise la GPIO. Ce bouton doit ensuite être désactivé. |
et permettant :
De choisir la broche raccordée à la LED (
cbGpio
).Le bouton
pbSS
est une bascule et se transforme en bouton stop pour allumer/éteindre la LED.D'afficher une image dans le label
laImage
représentant l'état de la LED (donc 2 images).
Indice
IHM :
Un label se crée à partir de la classe QLabel
.
La propriété pixmap
permet de placer une image au lieu du texte. Attention toutefois aux type de l'image ! Certains formats ne sont pas reconnus.
La propriété scaledContent
permet d'ajuster le l'image aux dimensions du widget (laImage
).
Vous pouvez aussi afficher du texte avec la méthode setText()
.
APPLICATION :
Vous devez utiliser la classe CGpio vue précédemment.

Solution
Fichier cihmappgpio.h
namespace Ui {
class CIhmAppGpio;
}
class CIhmAppGpio : public QMainWindow
{
Q_OBJECT
public:
explicit CIhmAppGpio(QWidget *parent = 0);
~CIhmAppGpio();
private slots:
void on_pbSS_clicked();
void on_pbActiver_clicked();
void onErreurGpio(QString str);
private:
Ui::CIhmAppGpio *ui;
CGpio *mGpio;
};
// CIHMAPPGPIO_H
Le fichier cihmappgpio.cpp
CIhmAppGpio::CIhmAppGpio(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::CIhmAppGpio)
{
mGpio=NULL;
ui->setupUi(this);
ui->cbGpio->addItem("4");
ui->cbGpio->addItem("5");
ui->cbGpio->addItem("6");
ui->cbGpio->addItem("12");
ui->cbGpio->addItem("13");
ui->cbGpio->addItem("16");
ui->cbGpio->addItem("17");
ui->cbGpio->addItem("18");
ui->cbGpio->addItem("19");
ui->cbGpio->addItem("20");
ui->cbGpio->addItem("21");
ui->cbGpio->addItem("22");
ui->cbGpio->addItem("23");
ui->cbGpio->addItem("24");
ui->cbGpio->addItem("25");
ui->cbGpio->addItem("26");
ui->cbGpio->addItem("27");
ui->cbGpio->setCurrentIndex(16);
}
CIhmAppGpio::~CIhmAppGpio()
{
delete mGpio;
delete ui;
}
void CIhmAppGpio::on_pbSS_clicked()
{
if (ui->pbSS->text() == "Allumer") {
mGpio->ecrire(1);
ui->pbSS->setText("Eteindre");
ui->laImage->setText("LED allumée");
} else {
mGpio->ecrire(0);
ui->pbSS->setText("Allumer");
ui->laImage->setText("LED éteinte");
} // else
}
void CIhmAppGpio::on_pbActiver_clicked()
{
if (mGpio != NULL) {
delete mGpio;
} // if mGpio
mGpio = new CGpio(ui->cbGpio->currentText().toInt(), OUT);
connect(mGpio, SIGNAL(erreur(QString)), this, SLOT(onErreurGpio(QString)));
ui->pbActiver->setEnabled(false);
}
void CIhmAppGpio::onErreurGpio(QString str)
{
QMessageBox msgBox;
msgBox.setInformativeText(str);
msgBox.exec();
}