from machine import Pin, I2C
import ssd1306
import dht
import time
led1 = Pin(33, Pin.OUT)
led2 = Pin(25, Pin.OUT)
# Configuration I2C pour l'écran OLED SSD1306
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Configuration du capteur DHT22
dht_sensor = dht.DHT22(Pin(15))
# État du système
system_active = True
def update_oled(temp, hum, active):
"""Met à jour l'écran OLED avec les données du système."""
oled.fill(0) # Efface l'écran
if active:
oled.text("System: ACTIF", 0, 0)
else:
oled.text("System: INACTIF", 0, 0)
oled.text(f"Temp: {temp:.1f}C", 0, 20)
oled.text(f"Hum: {hum:.1f}%", 0, 40)
oled.show()
def mesure_dht():
dht_sensor.measure()
temp = dht_sensor.temperature()
hum = dht_sensor.humidity()
return temp, hum
while True:
try:
if system_active:
# Lire les données du capteur DHT22 ---------------
temperature, humidity = mesure_dht()
if temperature > 40:
system_active = False
led1.off()
led2.off()
else:
system_active = True
led1.on()
led2.on()
# Mettre à jour l'écran OLED
update_oled(temperature, humidity, system_active)
else:
# Lire les données du capteur DHT22 ---------------
temperature, humidity = mesure_dht()
if temperature < 40:
system_active = True
# Mettre à jour l'écran OLED
update_oled(temperature, humidity, system_active)
time.sleep(2) # Attendre avant la prochaine mesure
except Exception as e:
oled.fill(0)
oled.text("Error!", 0, 0)
oled.text(str(e), 0, 20)
oled.show()
time.sleep(2)