Ce programme a pour but d’afficher les températures de plusieurs sondes en direct sur un écran.
Lorsque je lance le programme, la fenêtre affiche bien la bonne température mais elle ne varie pas, elle garde la valeur du début, j’ai essayé plusieurs choses pour remédié au problème mais rien n’y fait
#!/usr/bin/python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Tkinter
import Tix
import ScrolledText
import tkColorChooser
import tkCommonDialog
import tkFileDialog
import tkFont
import tkMessageBox
import tkSimpleDialog
import Tkinter as Tk
from PIL import Image, ImageTk
from Tkinter import Tk, Canvas
import PIL
from Tkinter import *
import os
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(22,GPIO.OUT)
import time
import datetime
import RPi.GPIO as gpio
GPIO.output(22,GPIO.LOW)
root = Tk()
ligne1 = 90
ligne2 = 60
ligne3 = 30
temperature1 = 0
n = 450-(10/3)*temperature1
#canvas = Canvas(root, background="white", width=1024, height=600)
def affiche ():
canvas = Canvas(root, background="white", width=1024, height=600)
canvas.create_rectangle((50,50),(100,450), fill="white")
image = PIL.Image.open("gradient.png")
photo = ImageTk.PhotoImage(image)
canvas.create_image(76,250, image=photo)
canvas.pack()
n = 450-(10/3)*temperature1
canvas.create_rectangle((50,50),(100,n), fill="white")
canvas.create_line((40,150), (100,150))
canvas.create_line((40,250), (100,250))
canvas.create_line((40,350), (100,350))
canvas.create_text(40,160, text=ligne1)
canvas.create_text(40,260, text=ligne2)
canvas.create_text(40,360, text=ligne3)
root.columnconfigure(1, weight=1)
canvas.grid(sticky="ew", column=1)
# root.after(1000,affiche)
# root.quit()
root.mainloop()
time.sleep(1)
# root.idle()
# root.destroy()
# define a function called morsecode
def morsecode ():
#Dot Dot Dot
GPIO.output(22,GPIO.HIGH)
sleep(.1)
GPIO.output(22,GPIO.LOW)
sleep(.1)
GPIO.output(22,GPIO.HIGH)
sleep(.1)
GPIO.output(22,GPIO.LOW)
sleep(.1)
GPIO.output(22,GPIO.HIGH)
sleep(.1)
#Dash Dash Dash
GPIO.output(22,GPIO.LOW)
sleep(.2)
GPIO.output(22,GPIO.HIGH)
sleep(.2)
GPIO.output(22,GPIO.LOW)
sleep(.2)
GPIO.output(22,GPIO.HIGH)
sleep(.2)
GPIO.output(22,GPIO.LOW)
sleep(.2)
GPIO.output(22,GPIO.HIGH)
sleep(.2)
GPIO.output(22,GPIO.LOW)
sleep(.2)
#Dot Dot Dot
GPIO.output(22,GPIO.HIGH)
sleep(.1)
GPIO.output(22,GPIO.LOW)
sleep(.1)
GPIO.output(22,GPIO.HIGH)
sleep(.1)
GPIO.output(22,GPIO.LOW)
sleep(.1)
GPIO.output(22,GPIO.HIGH)
sleep(.1)
GPIO.output(22,GPIO.LOW)
sleep(.7)
return
os.system('clear')
def lireFichier (emplacement) :
fichTemp = open(emplacement)
contenu = fichTemp.read()
fichTemp.close()
return contenu
def recupTemp (contenuFich) :
secondeLigne = contenuFich.split("\n")[1]
temperatureData = secondeLigne.split(" ")[9]
temperature = float(temperatureData[2:])
temperature = temperature / 1000
return temperature
def sauvegarde (temperature, date, emplacement) :
fichierSauvegarde = open(emplacement, "a")
fichierSauvegarde.write(str(date)+" ")
fichierSauvegarde.write(str(temperature)+'\r\n')
fichierSauvegarde.close()
i1 = 0
valeur = 2
while ( i1 < 100 ) :
date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
contenuFich1 = lireFichier("/sys/bus/w1/devices/28-03176084f9ff/w1_slave")
contenuFich2 = lireFichier("/sys/bus/w1/devices/28-05176037e6ff/w1_slave")
contenuFich3 = lireFichier("/sys/bus/w1/devices/28-03176041edff/w1_slave")
temperature1 = recupTemp (contenuFich1)
temperature2 = recupTemp (contenuFich2)
temperature3 = recupTemp (contenuFich3)
temp1 = 'Sonde 1 =' , temperature1
temp2 = 'Sonde 2 =' , temperature2
temp3 = 'Sonde 3 =' , temperature3
sauvegarde(temp1, date, "/home/pi/Bureau/Temperature.txt")
sauvegarde(temp2, date, "/home/pi/Bureau/Temperature.txt")
sauvegarde(temp3, date, "/home/pi/Bureau/Temperature.txt")
t = 40
t1 = 60
if temperature1 > t or temperature2 > t or temperature3 > t:
if temperature1 > t1 or temperature2 > t1 or temperature3 > t1:
GPIO.output(22,GPIO.HIGH)
else:
morsecode ()
time.sleep(2)
GPIO.output(22,GPIO.LOW)
print "Temperature Capteur #1 : " ,
print temperature1
print "Temperature Capteur #2 : " ,
print temperature2
print "Temperature Capteur #3 : " ,
print temperature3
affiche()
# root.columnconfigure(1, weight=1)
# canvas.grid(sticky="ew", column=1)
time.sleep(0.001)
valeur = valeur + 2
i1 = 1