#importation des library*************************************
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.uic import loadUi
import RPi.GPIO as GPIO
import threading
import time
from threading import Timer
from PyQt5 import QtCore # inclut QTimer..
import time
from grove.i2c import Bus
from threading import Timer
from PyQt5 import QtTest
#Fin de l importation des library*****************************
#Configuration ADC************************************************
ADC_DEFAULT_IIC_ADDR = 0X04
ADC_CHAN_NUM = 8
REG_RAW_DATA_START = 0X10
REG_VOL_START = 0X20
REG_RTO_START = 0X30
REG_SET_ADDR = 0XC0
#Fin de configuration ADC***************************************
#Configuration des ports GPIO***********************************
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(16, GPIO.OUT) #broche 16 en sortie
GPIO.output(16, GPIO.LOW) #Mise a 0 de la pin 16 pour l'init
#Definition des variables***********************************
global SB
SB=0
global SH
SH=0
global coupureF
coupureF="OUI"
global T
T=0
global M
M=10
global count
count=0
#**********************************************************
########INTERFACE-GRAPHIQUE-Qt DESIGNER*********************
def __init__(self):
super(HMI, self).__init__()
loadUi('BAI.ui',self)
self.checkBox.stateChanged.connect(self.Alstom2570) #Programme Alstom -25°C à 70°C valider appel de la fonction Alstom2570
self.spinBox.valueChanged.connect(self.etuve)
self.lcdNumber.display(count)
#stateChanged
def LCD(self):
self.lcdNumber.display(count)
def Alstom2570(self): #Fonction appele lors de la selection du programme Alstom -25°C à 70°C
#Toutes les variables sont declare et initialise pour correspondre au programme T2
print("case coche")#debug
global SB #definition de la variable SB (temperature seuil bas mise ss tension)
global SH #definition de la variable SH (temperature seuil haut mise ss tension)
SB=600 #variable definissant le seuil de temperature basse (si la temperature etuve descend sous -20°C mise ss tension)-20°C=600mV
SH=3001 #variable definissant le seuil de temperature haute (si la temperature etuve depasse 65°C mise ss tension) 65°C=3001mV
####on choisis -20 et 65 afin d etre sur que l etuve arrive a ces temperature et quil n'y ai pas doscillation de temperature
###ayant pour effet des demarrages alleatoirs
global TonF
TonF=15*60000 #Temps ON 15min en ms (mise ss tension) a froid (seuil bas)
global ToffF
ToffF=15*60000 #Temps OFF 15min (mise hors tension) à froid (seuil bas)
global T
#T=-25 #uniquement pour debug ensuite T sera la value par ladc
print("appel programme alstom2570")
Alstom2570class() #appel de la fonction permettant de sortir de class interface graphique Qt
def etuve(self):
global Netuve
Netuve=(self.spinBox.value())
print(Netuve)
########FIN DE DECLARATION DE L INTERFACE GRAPHIQUE Qt******
#Declaration et initialisation du convertisseur ADC*********
#def start():
#print("start")##debug !!
class Pi_hat_adc:
def __init__(self,bus_num=1,addr=ADC_DEFAULT_IIC_ADDR):
self.bus=Bus(bus_num)
self.addr=addr
print("adc")
#Fin de l initialisation de l ADC******************************
#Declaration de la fonction permettant de lancer la convertion ADC**************************
#Et de choisir le canal a convertir , la variable n *
#represente le canal 1**************************************************************
def get_nchan_vol_milli_data(self):
n=0
#print("get_nchan_vol_milli_data")
data=self.bus.read_i2c_block_data(self.addr,REG_VOL_START+n,2)
val =data[1]<<8|data[0]
return val
#Fin de la declaration de la fonction de pilotage de l ADC.************************************
ADC = Pi_hat_adc() #retour a la class pour init adc
def ReadTemp():
global T
T=ADC.get_nchan_vol_milli_data() # La variable T correspond a la tension issue du capteur de temp*******
#print(T) #il faudra inserer ici la convertion tension>temperature
###########################################################################################
# PROGRAMME ALSTOM -25°C 70°C #
# #
###########################################################################################
def Alstom2570class():
global TonF #variable temps ON froid (15min)
global ToffF #variable temps OFF froid (15min)
global M
global T
T=ADC.get_nchan_vol_milli_data()
print(T) # debug
global count
global Netuve #declaration de la variable Netuve permettant de recuperer le N etuve saisie par l utilisateur
#print("Alstom2570class")
while T > SB: #tant que la temperature n'arrive pas au seuil bas (on commence le T2 par le seuil bas)
T=ADC.get_nchan_vol_milli_data() #(relecture de la temperature)
QtTest.QTest.qWait(10000) #tempo pour ne pas saturer le pi
print(T)
myobjetx
= QDialog() #HERE A NEED TO CALL LCD FUNCTION FOR WRITE VARIABLE IN lcdNumber WIDGET myobjetx.LCD()
print("seuil bas atteind") #execution lorsque lon arrive au seuil bas
#Fin de la fonction ReadTemp permettant de lancer la convertion de l ADC**************************
if __name__ == '__main__':
widget=HMI()
widget.show()
sys.exit(app.exec_())
Bookmarks