import machine
import utime
import ssd1306
import dht
# Initialize OLED display
i2c = machine.I2C(0, sda=machine.Pin(0), scl=machine.Pin(1))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Initialize DHT22 sensor
dht_sensor = dht.DHT22(machine.Pin(2)) # Change pin number as needed
# Moving average parameters
window_size = 10
temp_readings = [0] * window_size
avg_index = 0
def moving_average(new_reading):
global temp_readings, avg_index
temp_readings[avg_index] = new_reading
avg_index = (avg_index + 1) % window_size
return sum(temp_readings) / window_size
# Main loop
while True:
# Read temperature and humidity from DHT22 sensor
dht_sensor.measure()
temp_celsius = dht_sensor.humidity()
# Compute moving average of temperature
moving_avg_temp = moving_average(temp_celsius)
# Clear previous content on display
oled.fill(0)
# Display temperature
oled.text("Temp (C):", 0, 0)
oled.text("{:.2f}".format(moving_avg_temp), 0, 10)
# Display moving average
oled.text("Moving Avg (C):", 0, 30)
oled.text("{:.2f}".format(moving_avg_temp), 0, 40)
# Refresh display
oled.show()
# Delay before next reading
utime.sleep(1) # Adjust delay as needed