Buongiorno,
ho istallato su un raspberry un sensore SHT40 per misurare l'umidità e tempertaura.
Configurato e funzionante con questo script, che mi genera un grafico animato con Thonny.
Ecco lo script:
import matplotlib.pyplot as plt
from datetime import datetime
from matplotlib import pyplot
from matplotlib.animation import FuncAnimation
import time
import board
import adafruit_sht4x
i2c = board.I2C() # uses board.SCL and board.SDA
sht = adafruit_sht4x.SHT4x(i2c)
print("Found SHT4x with serial number", hex(sht.serial_number))
sht.mode = adafruit_sht4x.Mode.NOHEAT_HIGHPRECISION
print("Current mode is: ", adafruit_sht4x.Mode.string[sht.mode])
plt.style.use('ggplot')
x_data = []
y_data = []
figure = pyplot.figure()
line, = pyplot.plot_date(x_data, y_data, '-')
def grafica3(frame):
temperature, relative_humidity = sht.measurements
# temperature = temperature + 10 #offset temperature
# relative_humidity = relative_humidity - 2.5 #offset humidity
# print("Temperature: %0.2f °C" % temperature)
# print("Humidity: %0.2f %%" % relative_humidity)
print("temperature: %.2f °C / humidity: %.2f %%" % (temperature, relative_humidity))
# print("")
Ru = relative_humidity
plt.ylim(50,100)
plt.title('SHT 40')
plt.ylabel('Umidità %')
plt.xlabel('Tempo')
x_data.append(datetime.now())
y_data.append(Ru)
line.set_data(x_data, y_data)
figure.gca().relim()
figure.gca().autoscale_view()
time.sleep(10)
return line,
animacion3 = FuncAnimation(figure, grafica3, interval=300)
pyplot.show()
Ogni 10 secondi, legge il valore dell'umidità, e man mano che scorre il tempo il grafico nella x si adatta, "si compatta".
La mia domanda è la seguente: c'è una possibilità, di impostare la x fissa, per esempio con un range di 0-500 e ad ogni lettura del valore del sensore,
vedere la linea che piano piano cresce verso destra, fino a riempite tutto il grafico?
Purtroppo sono alle prime armi, e non sono riuscito a trovare un aiuto...
Grazie per l'attenzione
ho istallato su un raspberry un sensore SHT40 per misurare l'umidità e tempertaura.
Configurato e funzionante con questo script, che mi genera un grafico animato con Thonny.
Ecco lo script:
import matplotlib.pyplot as plt
from datetime import datetime
from matplotlib import pyplot
from matplotlib.animation import FuncAnimation
import time
import board
import adafruit_sht4x
i2c = board.I2C() # uses board.SCL and board.SDA
sht = adafruit_sht4x.SHT4x(i2c)
print("Found SHT4x with serial number", hex(sht.serial_number))
sht.mode = adafruit_sht4x.Mode.NOHEAT_HIGHPRECISION
print("Current mode is: ", adafruit_sht4x.Mode.string[sht.mode])
plt.style.use('ggplot')
x_data = []
y_data = []
figure = pyplot.figure()
line, = pyplot.plot_date(x_data, y_data, '-')
def grafica3(frame):
temperature, relative_humidity = sht.measurements
# temperature = temperature + 10 #offset temperature
# relative_humidity = relative_humidity - 2.5 #offset humidity
# print("Temperature: %0.2f °C" % temperature)
# print("Humidity: %0.2f %%" % relative_humidity)
print("temperature: %.2f °C / humidity: %.2f %%" % (temperature, relative_humidity))
# print("")
Ru = relative_humidity
plt.ylim(50,100)
plt.title('SHT 40')
plt.ylabel('Umidità %')
plt.xlabel('Tempo')
x_data.append(datetime.now())
y_data.append(Ru)
line.set_data(x_data, y_data)
figure.gca().relim()
figure.gca().autoscale_view()
time.sleep(10)
return line,
animacion3 = FuncAnimation(figure, grafica3, interval=300)
pyplot.show()
Ogni 10 secondi, legge il valore dell'umidità, e man mano che scorre il tempo il grafico nella x si adatta, "si compatta".
La mia domanda è la seguente: c'è una possibilità, di impostare la x fissa, per esempio con un range di 0-500 e ad ogni lettura del valore del sensore,
vedere la linea che piano piano cresce verso destra, fino a riempite tutto il grafico?
Purtroppo sono alle prime armi, e non sono riuscito a trovare un aiuto...
Grazie per l'attenzione