![]() ![]() PyQt Lab' : Mini-PC : RaspberryPi : L'appui sur un bouton graphique allume/éteint une LED.Par X. HINAULT - Juin 2013 ![]() Capture du bureau en accès distant par VNC Ce que l'on va faire ici
ATTENTION : Ce code est à exécuter sur un mini-PC (ici le RaspberryPi) Tout l'intérêt de ce programme est de montrer avec quelle simplicité il est facile de coupler l'utilisation de la librairie Pyduino avec une interface PyQt : l'accès aux fonctions Pyduino se fait directement dans le code PyQt !! Une chose tout simplement impossible à partir de l'IDE Arduino ! A partir du moment où il est possible d'utiliser les instructions Pyduino au sein même d'un code d'interface graphique, je vous laisse imaginer la suite...
Pré-requis
sudo wget -N https://raw.github.com/sensor56/pyDuino/master/RaspberryPi/pyduino.py /usr/lib/python2.7/dist-packages Téléchargement des codes
$ git clone https://gist.github.com/d244eb6cd4f556950688.git tuto_pyqt_pyduino_bases_button_toggle Matériel nécessaire
![]()
![]()
![]()
![]() Instructions de montage
Le montage à réaliserLe fichier d'interface *.py
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file # # Created: Mon Dec 31 18:38:08 2012 # by: PyQt4 UI code generator 4.9.1 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) Form.resize(307, 128) self.pushButton = QtGui.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(100, 30, 126, 56)) self.pushButton.setCheckable(True) self.pushButton.setChecked(False) self.pushButton.setObjectName(_fromUtf8("pushButton")) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "PyQt : pushButton On/Off", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton On/Off", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) Le fichier d'application *Main.py
#!/usr/bin/python # -*- coding: utf-8 -*- # par X. HINAULT - juin 2013- Tous droits réservés # GPLv3 - www.mon-club-elec.fr # modules a importer from PyQt4.QtGui import * from PyQt4.QtCore import * # inclut QTimer.. import os,sys from pyduino import * # importe les fonction Arduino pour Python from tuto_pyqt_pyduino_bases_button_toggle import * # fichier obtenu à partir QtDesigner et pyuic4 # entete declarative LED=2 # broche utilisee pour la LED # classe principale class myApp(QWidget, Ui_Form): # la classe reçoit le Qwidget principal ET la classe définie dans test.py obtenu avec pyuic4 def __init__(self, parent=None): QWidget.__init__(self) # initialise le Qwidget principal self.setupUi(parent) # Obligatoire #Ici, personnalisez vos widgets si nécessaire #Réalisez les connexions supplémentaires entre signaux et slots self.connect(self.pushButton, SIGNAL("clicked()"), self.pushButtonClicked) # connecte le signal Clicked de l'objet bouton radio à l'appel de la fonction voulue pinMode (LED, OUTPUT) # met la LED en sortie digitalWrite(LED, LOW) # LED eteinte au debut # les fonctions appelées, utilisées par les signaux def pushButtonClicked(self): print("Bouton clique") if self.pushButton.isChecked()==True: print("Etat bouton = enfonce") digitalWrite(LED,HIGH) # allume la LED else: print("Etat bouton = relache") digitalWrite(LED, LOW) # eteint la LED def main(args): a=QApplication(args) # crée l'objet application f=QWidget() # crée le QWidget racine c=myApp(f) # appelle la classe contenant le code de l'application f.show() # affiche la fenêtre QWidget r=a.exec_() # lance l'exécution de l'application return r if __name__=="__main__": # pour rendre le code exécutable main(sys.argv) # appelle la fonction main Utilisation
![]() |