import dht
from machine import Pin
import time
# Initialize the DHT22 sensor
sensor = dht.DHT22(Pin(15)) # Assuming GPIO15 is connected to the DHT22 data pin
# Define variables for data processing
temperature_data = []
window_size = 5 # Number of samples to calculate moving average
def read_sensor():
try:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
return temp, hum
except OSError as e:
print("Failed to read sensor data:", e)
return None, None
def moving_average(data, window_size):
if len(data) < window_size:
return sum(data) / len(data) # Average of available data if less than window size
else:
return sum(data[-window_size:]) / window_size # Average of the last 'window_size' values
# Main loop
while True:
temp, hum = read_sensor()
if temp is not None:
temperature_data.append(temp)
avg_temp = moving_average(temperature_data, window_size)
# Print results
print(f"Current Temp: {temp}°C, Moving Average Temp: {avg_temp}°C")
# Delay before the next reading
time.sleep(2)