Au cours de cette séance, nous avons créé des graphiques pour tracer la température lue sur le capteur
DS18B20 que nous avions déjà utilisé au cours d'une séance précédente.
La librairie utilisée pour construire des graphiques est : matplotlib
. Cette librairie
doit s'installer : en effet, elle n'est pas disponible dans les librairies standards de Python.
Les étapes sont les suivantes :
pip install matplotlib
Le programme va exécuter les opérations suivantes :
Le fait de limiter le nombre de points à 20, permet de voir les 20 dernières mesures de température, au fur et à mesure de l'exécution du programme, la courbe est mise à jour : le graphique est dynamique.
Le code source est le suivant :
# Librairie de fonctions de gestion de temps
import time
# Librairie de fonctions pour la date
from datetime import datetime
# Librairie de fonctions pour l'affichage des graphiques
from matplotlib import pyplot
# Librairie de fonctions pour l'animation des graphiques
from matplotlib import animation
# Librairie de fonctions de gestion du capteur DS18B20
from w1thermsensor import W1ThermSensor
# Création de la figure qui va contenir le graphique
fig = pyplot.figure()
# Création du graphique
graph = fig.add_subplot(1, 1, 1)
# Création des axes X et Y : tableau de valeurs
axe_x = []
axe_y = []
# Création du capteur (branché sur la PIN GPIO 4)
sensor = W1ThermSensor()
# Cette fonction sera appelée périodiquement
def animate(i, axe_x, axe_y):
# Récupération de la température
# depuis le capteur
temperature = sensor.get_temperature()
# Affichage de la température
print(temperature)
# Ajout des données aux axes X et Y
axe_x.append(datetime.now().strftime('%H:%M:%S.%f'))
axe_y.append(temperature)
# Limite les axes X et Y à 20 éléments
axe_x = axe_x[-20:]
axe_y = axe_y[-20:]
# Efface le graphique actuel
graph.clear()
# Trace les données
graph.plot(axe_x, axe_y)
# Formate le graphique
pyplot.xticks(rotation=45, ha='right')
pyplot.subplots_adjust(bottom=0.30)
pyplot.title('Temperature')
pyplot.ylabel('Temperature (deg C)')
# Réglage de la fonction qui sera appelée régulièrement
ani = animation.FuncAnimation(
fig,
animate,
fargs=(axe_x, axe_y),
interval=1000)
# On affiche la figure
pyplot.show()
Le capteur est branché sur la PIN GPIO 4 du Raspberry PI avec une résistance de 5K, comme indiqué dans le compte-rendu de la séance du 01/07/2023.