Évolution de la température en fonction du temps :
Bonjour, voilà mon problème j'aimerai pouvoir afficher ma courbe de température en temps réèl dans mon interface, il me faut donc une visualisation dynamique pour afficher chaque points de la température en fonction du temps, mais je ne sais pas comment faire.
Quelqu’un sait comment activer l’option dynamique avec matplotlib.pyplot ?
Dans mon code, j'exporte ma courbe en image et je la lis ensuite dans l'interface, cette solution ne me plais pas du tout, il y a surement plus pratique. Je simule la température par une variable mesure qui s'incrémente mais je mettrai le capteur ensuite.
Voici mon code (il fonctionne) :
Merci de votre aide.Code:#!/usr/bin/env python # -*- coding: utf-8 -*- import serial import matplotlib.pyplot as plt import RPi.GPIO as GPIO import time import gtk import gobject import pygtk def main(): #**** affichage gtk ******* global ma_fenetre global image_bat gobject.timeout_add(2000,lecture_temp) #**** Interface Home machine (IHM) ou Graphic User Interface (GUI)******* # -1- Creation de la fenetre principale : ma_fenetre ******************* ma_fenetre=gtk.Window() ma_fenetre.set_title('Chargeur connecté') ma_fenetre.resize(400,200) ma_fenetre.connect("destroy",gtk.main_quit) ma_fenetre.show # -2- Creation des conteneurs : # conteneur_general conteneur_general=gtk.Table(rows=1,columns=1,homogeneous=True) # conteneur_image conteneur_image=gtk.Table(rows=1,columns=1,homogeneous=False) # -3- Creation des widgets labels, image et boutons ******************* #Pour visualiser les labels bouton avec les images de gtk.STOCK settings=gtk.settings_get_default() settings.props.gtk_button_images = True image_bat=gtk.Image() image_bat.set_from_file("courbe_test.png") #**************************************************************************** # -4- mise en page des 2 boutons , de l image , de l etat volet et des 6 labels #**************************************************************************** #attacher les widgets image conteneur_image.attach(image_bat,0,1,0,1,gtk.SHRINK,gtk.SHRINK,5,5) # attacher les conteneurs suivants dans le conteneur_general # conteneur_image conteneur_general.attach(conteneur_image,0,1,0,1,gtk.SHRINK,gtk.SHRINK,5,5) # ajouter a 'ma_fenetre' le conteneur_general ma_fenetre.add(conteneur_general) # -5- afficher ma_fenetre dans sa totalité ma_fenetre.show_all() # -6- lancer gtk.main() gtk.main() valeurs=[] temps=[] plt.style.use('bmh') plt.ylabel("Température") plt.xlabel("Temps en seconde") plt.ion() # on entre en mode interactif start=time.time() # mesure de l'instant initial mesure=0 i=0 while (i<5): mesure=mesure+1 # lit la donnee sur la laison serie valeurs.append(mesure) # ajout de mesure a la liste des valeurs instant=time.time()-start # calcul du temps ecoule depuis l'instant initial temps.append(instant) # ajout de instant a la liste des temps print mesure,instant # affiche dans la console les coordonnees du point plt.plot(temps,valeurs,marker='o') # trace la courbe plt.draw() # affiche la courbe en mode interactif i=i+1 time.sleep(1) plt.savefig("courbe_test.png") #plt.show() plt.ioff() # on quitte le mode interactif pour rendre la main a l'utilisateur sur la courbe plt.show() # afficher la courbe return 0 def lecture_temp(): global image_bat global no_parcours image_bat=gtk.Image() image_bat.set_from_file("courbe_test.png") return (1) #************************************************ if __name__=='__main__' : main()
-----