from machine import Pin, SoftI2C, Timer
from ssd1306 import SSD1306_I2C
from dht import DHT22  # Importing DHT22 module

sda_pin = Pin(0)
scl_pin = Pin(1)
button_pin = Pin(10, Pin.IN, Pin.PULL_DOWN)
dht_pin = Pin(28, Pin.OPEN_DRAIN)

WIDTH = 128
HEIGHT = 64
OLED_ADDR = 0x3d
display_enabled = True

i2c = SoftI2C(scl=scl_pin, sda=sda_pin, freq=400000)
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c) 

dht = DHT22(dht_pin)

def display(pin):

    global display_enabled
    if display_enabled == True:  
        display_enabled = False  

    elif display_enabled == False:  
        display_enabled = "temperature"  
        
    elif display_enabled == "temperature":  
        display_enabled = "humidity"  

    elif display_enabled == "humidity":  
        display_enabled = True  

def read_values(timer):
    global display_enabled

    if display_enabled == True:
        dht.measure() 
        temperature = dht.temperature()
        oled.fill(0)
        oled.text("Temp. = {:.2f}C".format(temperature), 0, 0, 1)
        oled.show()

    elif display_enabled == "temperature":
        dht.measure()
        temperature = dht.temperature()
        oled.fill(0)
        oled.text("Temp. = {:.2f}C".format(temperature), 0, 0, 1)
        oled.show()

    elif display_enabled == "humidity":
        dht.measure()
        humidity = dht.humidity()
        oled.fill(0)
        oled.text("Humidity = {:.2f}%".format(humidity), 0, 0, 1)
        oled.show()

    else:
        oled.fill(0)
        oled.text("Display Off", 0, 0, 1)
        oled.show()

button_pin.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=display)
timer = Timer()
timer.init(period=100, mode=Timer.PERIODIC, callback=read_values)
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT